컴공 일기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를 선물하세요.
-
근데 누군가의 강요가 아닌 자기 손으로 n수 선택해놓고 자기연민에 빠져서...
-
개딸새끼들 6
?
-
ㄹㅇ 입시아님 제발 성공해서 옵붕이들에게 깊티 뿌릴수 있게 해주세요
-
연대는 조발하라 1
어차피 합불은 다 나와있잖아
-
ㄱㄱ헛
-
미래를봐버려 먼가재수실패하면삼수해야한다는게너무무서웠어
-
결국 기회비용 따져보면 일정수준 이상에선 n수 안박는게 우월전략일 수 있다고봄
-
물론 이미 원서접수 끝났지만 25학번 강의실 만들기 위해 어느 학교는 동아리방 짐을...
-
이 기준이 가장 맞다고 봅니다
-
ㄷ 선지 사실 크기는 1에서 0.5니까 2분의 1이고 C는 총량이 일정하니...
-
알바하면 그려지는 이미지가 뭔가요? 에 님들은 대답 어케할거임? 3
ㅁㅊ 이걸 어케 대답해
-
오르비가 메디컬 분들이 많고 장수생분들이 많아서 그렇지 앵간하면 재수에서 끝내시길
-
까보자 빨리
-
메가 합격예측은 진짜 참고용도 힘들다 그래서 안봤었는데 메가 점공은 어떤가요??...
-
예비고3이고 마더텅 풀면 도표빼고 거의 다맞는데 뭐해야함? (도표는 어려워서...
-
합격증 ㅇㅈ이 올라올때
-
점심 뭐먹지 4
흠냐
-
편의점 알바 군필유무 물어보는데 미필인데 군필이라 구라쳐도 되나요!!? 7
군필은 확인 뭐 할 방법이 있을가요? ㅎ..
-
저 영상하고 증언들만 놓고 봐도 일본 사회 특성상으로 대입해 볼 때 애가 ADHD와...
-
앞으로 전공의 티오는 줄어드는데 뭔소리들 하는거임? 1
대학병원에서 병상 줄이면서 간호사도 줄이고 전공의도 줄이고 중증전문의 위주로만...
-
더블유이즈비비미앤유위배스티스
-
사람 하나 살린다 생각하고 투표 한번만 해줘요 ㅠㅠ 0
5명 모집 29명 지원 점공 5/17이고 원서접수마감 직전 실지원 희망...
-
언미생지에 국. 수. 영. 생. 지 백분위 66. 78. 94. 51 등급. 4....
-
3일 벼락치기하고 윤성훈선생님 조교 테스트 잘볼수있겠지??
-
올해 정시 컨설팅에서 스카이 대량 펑크 예상하던가요? 4
제가 받은 컨설팅은 진학사를 너무 의지해서 그런지, 너무 짜게 예상하던데......
-
애플로 로그인해서 비밀번호 설정한 적이 없는데, 생년월일을 적어도 로그인이...
-
가능성 “0” 아님?
-
연대 지원 안하신 분들이 강건너 불구경하시면서 장난치시는건지 어쩐건진 몰라도...
-
아니 미쳤나 0
문학론 유네스코 유네스코 이다지 개념 문풀 책 5권 사는데 19만원이나오노…
-
요새는 비문학에서 인문, 그중에서도 철학 예술 파트에서 고난도 문제가 출제되잖아요...
-
계정 비활 풀었습니다 17
이참에 몇년째 안달던 뱃지도... 복귀 기념 무물 받아요
-
점공상
-
병원은 파산했지만 의사로서 생명을 살렸으니 조아쓰~
-
덕코내놧 8
내놧
-
ㅈㄱㄴ
-
간호대 ㄹㅇ 괨찮아보임
-
집에 컴퓨터 있고 아이패드 있어요 어문이랑 공대 전공 기초 들을 것 같은데...
-
진학사에는 없는 상위표본 생각보다 있음요 진학사 1등보다 높은사람도 있음 ㅜㅜ
-
스블이랑 뉴런 중에 추천 부탁드립니다
-
강남하이퍼의대관기숙 2달정도 다녔음 시설은 별로고 사실 컨텐츠가 좋은지도 모르엤지만...
-
계절 종강이다 8
마지막날인데 잠도 제대로 못잤어
-
여러분의 선택은? (어그로 ㅈㅅ) 연컴 설경 물2 인하대 중앙대 설대 중앙 홍대...
-
드릴정도 난이도면 보통 10문제풀면1시간반 정도걸리던디
-
가능할까 ㅋㅅㅋ
-
일단 나부터
-
여기 자습시간 시간표만 봤을땐 너무 적어보이는데 실제로는 얼마나 돼나여...?
-
ㅠㅠㅠㅠㅠㅠ
-
친구중에 국어 기출문제 1권풀고 사문도 개념만 듣고 기츨돌리다가 수능장 가서 국어...
-
예비고3입니다 수학 공부를 어떻게 해야하는지 감이 안와요.. 고2 모의고사 2등급,...
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요