컴공 일기257
게시글 주소: https://orbi.kr/00070821481
임시객체 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를 선물하세요.
-
(26 부탁) (고교학점제) 현 고1 치를 서울대 수시 'SNU 역량평가 면접' 구체안 첫 공개, 이제 고등학교 다시 재이수 안 하고서는 대학가기 어려워... 0 0
출처 : [단독] 현 고1 치를 서울대 수시 'SNU 역량평가 면접' 구체안 첫...
-
참 바보 같은 난 0 0
바람만바람만
-
과외도 못 잡아 편의점도 못 가 집 근처 학원 조교도 못 해 문자 넣으면 전부...
-
료이키 텐카이 0 0
후쿠마미즈시
-
초ㅇㅂㄱ 0 0
4시간잤지만 개운함..
-
용린, 반발, 한 쌍의 유성 2 0
세계를 가르는 참격
-
과외/조교 용 미적분 2 0
미적 드릴 푸는데 어렵노; 23드릴만 하나 끝내고 기출이나 해야겠음
-
지금 시간은 4 0
.
-
암흑표본 사라졌다 1 0
이럼 4일째 점공 유입 없는건데 이대로 등수 나올라나 이럼 최초합 킹만한데..
-
2230-0500 8 0
슈퍼갓생루틴
-
0칸스나 잘하면 붙을듯 2 0
내 앞에 400명만 빠지면 됨
-
진짜 모의고사는 1 0
기출 공부도 안해보고 풀어도 높2~1 떴는데 왜 수능은 3이 떴을까 올해는 강기분으로..
-
굉장히 적을 것이다
-
내가 생각해도 미친듯이 기구하네 진짜 모래주머니 사십개쯤 차고 마라톤뛰는느낌
-
경희대 이정도면 추합 될까요 1 1
국제학과고, 작년에 40명대, 재작년에 10명대 돌았습니다
-
리젠이 죽었으니 6 1
여긴 이제 국내 배변배설마이너 갤러리가 점거한다.
-
다 자러갔네 1 0
나도 자러간다
-
안녕하세요~^^ 19 0
아 네..^^
-
고대 국교과 점공좀 들어와봐 0 0
10명만 들어오면 다들어오는건데
-
모평관련 궁금한거잇는데 6 0
모평 보려면 모교 가서 접수해야됨? 독학기숙 다녔어서 잘모름
-
아 수능보고싶다 3 0
모의고사 보게헤줘
-
누군가는 기상시간이구나 6 0
아직도 안자고 있는 이새낀 뭐지
-
국어 재밌다 9 0
수능국어가 제일 재밌는듯
-
알바 붙는 꿀팁좀 3 0
이제 20살이라 경력 아예 없어서 알바 지원 넣어도 연락 안오던데 어케 해야되는지...
-
아샤갈깨달았다 1 0
난그냥사람이싫은거였음 나스스로포함
-
영화추천 49 1
해줘
-
얼리버드기상 0 0
총기상~~
-
스카에서 1시간자니까 1 1
자리에 초코하임이 생겼네
-
야식추천좀 9 0
야한음식말하는거
-
존나무기력하네 1 0
뭐하면재밌지
-
이거먹을거임 4 0
-
늦었지만~ 26수능 미적분 백분위 99 질문 받습니다! 8 1
안녕하세요.25대입 당시 국숭세단 라인에 진학했다가 반수를 선택했고,26수능 미적분...
-
네 모습에 난 용기를 얻어
-
홍대 전전 진학사 점공 4 0
며칠전에 한번 여쭤보긴했는데....불안해서 마지막으로 물어볼께요 ㅠㅠ. 이거 좀...
-
얼버기 2 0
좋은 아침입니다
-
막상 시작하려니깐 두렵다. 노베에서 수능만점까지.. 다음주 월요일부터 달린다
-
변증법 지문 2 0
배울게 많음
-
라면 먹을거임 1 0
ㅅㄱ
-
다들 자나 2 0
ㅜㅜ
-
아까 확정 성적 반영됐는데 3 2
걍 이번 학기 성적이긴 한데 올 전공 4점대라 기분 좋노 ㅋㅋㅋ 전체 평균 학점이 이랬으면 ㄷㄷ
-
안녹산이 누구임 7 0
부산 토박이임?
-
수학 노베에서 100점 6 1
성공한 사람 있음?
-
머가 더 어려움 5 0
24수능 지문형 2609, 38번
-
머가 더 어려움 6 0
251122, 261122
-
훅의법칙이 뭐지다노ㅋㅋ
-
물리학과 붙엇습니다 2 1
멋진 물리학자가 되겟습니다
-
인강보면서 의문생기면 qna는 보통 1~2일 걸리길래 제미나이 애용하는데 이게...
-
죄다 멀끔하게 생김
-
아 피방 가야겟다 2 0
아침으로 치마덮 먹어야지
-
경희대 국캠다니시는분 0 0
쪽지좀요

아직도 계셨군요ㄷㄷ드문드문 들어오고 있습니다.

코딩에 대한 열정 대단하십니다초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요