컴공 일기257
임시객체 Copy이슈로 오는 비효율을
Move semantics로 해결하곤 합니다.
단위를 객체로 보는 객체지향에서는, 이 임시객체에 대한 비효율을 처리해주어야 하는 로직이 따로 필요합니다.
왜냐… 임시객체는 말 그대로 임시적인 거라, 연산이 끝나면 곧 사라지기 마련인데, 사라질 애를 위해 Deep Copy를 한다는 건 메모리 낭비이기 때문이죠..
결국 임시객체는 Shallow Copy로 해결할 수 있고, 그것을 지원하는 문법이 Move semantics 입니다.
C++11에서부터 도입이 되었죠. 이 임시객체 문제를 해결하기 위해서요.
#include <iostream>
using namespace std;
class Test
{
public:
Test()
{
cout << "Test()" << endl;
pData = new int(0);
}
Test(const Test& rhs)
{
cout << "Test(const Test&)" << endl;
this->setData(rhs.getData());
}
Test(Test&& rhs) noexcept
{
cout << "Test(const Test&&)" << endl;
delete pData;
pData = rhs.pData; //shallow copy
rhs.pData = nullptr;
}
int setData(const int pnData)
{
if(pData != nullptr) delete pData;
//Deep copy
pData = new int(pnData);
return *pData;
}
int getData() const
{
return *pData;
}
Test& operator=(const Test& rhs)
{
cout << "operator=(Test&)" << endl;
setData(rhs.getData());
return *this;
}
//계속 사칙 연산이 가능하도록 해야하므로 반환값은 참조형
Test& operator=(Test&& rhs) noexcept
{
cout << "operator=(Test&&) - move" << endl;
delete pData;
pData = rhs.pData;
rhs.pData = nullptr;
return *this;
}
private:
int* pData = nullptr;
};
//임시객체를 의도적으로 생성하는 함수
//1. 연산 결과 2. 함수 반환값
Test getTestData(int param)
{
cout << "getTestData()" << endl;
Test test;
test.setData(param);
return test; //여기에서 이동 시맨틱이 호출된다.
}
int main()
{
cout << "*** Before ***" << endl;
Test t1 = getTestData(5); //컴파일러 최적화에 의해 이동생성자가 불리지 않음
Test t2(move(getTestData(10)));
Test result;
result = getTestData(23);
cout << “*** end ***” << endl;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
중학교때 꽤 친하게 지낸 친구가 엠카도 나오고 유튭 자컨도 찍고 그러니까 좀 신기함...
-
빨리하거라
-
투데이 ㅇㅈ) 4
뭐냐
-
아 느낌왓다 3
내일 계명대 조발임
-
피 뽑으면 바로 상쇄임 ㄱㅊ
-
심심해서
-
공익이신분들 7
어케 공익뜸? 하...
-
25수능 지구 백분위 76 받았는데 지구 가져가고 사탐1 할까요? 아님 그냥 사탐...
-
이 성적으로 안정 잡히는 대학 라인이 어디일까요? 다채롭게 조져서 다 비슷할거긴...
-
수능 굳이 쳐야되나 라는 생각이 자꾸 듦 열등감으로 똘똘뭉친인간이 이렇게 변하다니
-
?
-
설맞이 ㅇㅈ 13
표지가 가면 갈수록 이뻐져요 24 25도 있음 둘 다 레전드
-
뭐가 더 낫나요
-
조옺같다.. 4
점공 14등으로 밀렸네 .......
-
책 ㅇㅈ) 4
ㅈㄱㄴ
-
타과목은 자신 없고 국어는 좀 자신 있는데..
-
깨있을때 침대 방방뜀 ㄹㅇ커여움
-
마약 인증22) 3
진짜다
-
. 11
.
-
잘자요 6
좋은꿈꾸세요
-
오늘부터 데이트비안내봐야겠다
-
수학 과외 4개하고있는데 유지하면서 수능공부 할 수 있을까요?
-
마약 ㅇㅈ) 6
ㅈㄱㄴ
-
걍 전글농담ㅇㅁ 0
ㅈㄴ지하게 받아들이지마셈
-
깜빡하고 한 장이 접힌채로 안 널어짐 이거 넘 꾸깃꾸깃한데 조만간 다시 빨아야되나....
-
재수 어떻게해야할까 올수 화확한지사문 22211 감귤국이라 근처에 재수학원도 별로...
-
어제 머리 좀 잘됐네
-
반수한다고 하루종일 기숙사랑 도서관에서 수능 공부할거니까 ㅜㅜㅜㅜㅜ
-
설레는 스킨십 2
난 반응식에 펜닿을때 설레더라 암산말고 펜으로 쓸때마다 설렘
-
먼메타여.. 2
시이빨 또 모쏠아다 입뺀메타네....
-
얘네가 진짜 예쁨 근데 노트정리도 안하고 수학문제 풀때빼곤 연필도 안잡음 그냥 책상인테리어임
-
생기부가 좆망이거든여 메이크업 아티스트가 되는 법을 알아보고 체험해보았다 연극을...
-
또 ㅈ같은메타네 1
에휴
-
엔수생이고 25수능 원점수 76점 3나왔습니다 작년에 현우진 뉴런까지 들었고 수능...
-
나 왜 게이컨셉잡고 있지?
-
첫사랑썰 1
우린 고2겨울방학때 만났음 대성 마이맥인강을 들으며 만났고 3주동안 데이트를 했어...
-
차단해두고 마셔야하나..
-
하.... 일생일대의 고민
-
경기 재밌다 2
승차까지 가요 아스날 친구들..
-
진짜 긴장해라 내가 간다
-
영어 과외 1
별론가여?
-
ㅈㄱㄴ
-
썸깨진 썰 4
내가 썸이라고 생각했던 모든 순간들이 나한테만 썸이었을수도 있어서 애매함
-
내일 가족여행가서 먹기로함 취하면안더ㅣ는ㄴ데 얼마나 마셔야하지 모르겟네..보드카는처음이라
-
악필 ㅇㅈ) 3
이정도면 양호한 편임
-
썸깨진 썰 3
영화보고 산책조금하자고 했는데 졸리니 자러가야한다고 하고 집갔음 충격 실화임..
-
현재 고3 모고 기준 가장 못 본 모의고사가 43444이고 내신은 평균 5점대인데...
-
음역대부터 발성까지 확 달라짐
-
뇌가 사르륵 녹음.. 구냥 걔한테 연락오면 계속가슴뜀. 졸린데 쪽잠자먄서 답장...
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요