컴공 일기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를 선물하세요.
-
뻘글 배설메타 6 2
AI는 신기하게도 프롬프트가 더욱 정밀할 때, 자기교정을 못합니다. 자기교정이라...
-
새르비출쳌 18 1
모시모시키코에테루?
-
국어 문제집 추천 받습니다 4 0
고2 모고 백분위 99는 고정으로 나옵니다 고2 문학이랑 독서 기출은 풀건데고3...
-
소신발언 하나 함 3 0
나중에
-
stay alive입니다 이건 옛날에 나온버전이고 최근에 한번 더 불러서 엔딩에도...
-
이성과 친해지는 법 아는 분 26 0
절실합니다. 댓 달아주세요. 고민상담..
-
애기들잘자.. 2 1
-
. 2 0
-
241128 수2버전 만듬 8 2
통통이친구들한테 뿌려야겟다
-
기출 안돌린 사람 많나보다
-
카라티 두벌 충동구매조짐 1 0
잠들지못한망령에게쇼핑악귀가들림 이번달에만옷에얼마를쓰는거냐..
-
ㅇㅈ 2 1
운지
-
연구에 따르면 AI를 사용한 전문가들은 24%정도의 작업시간 감소를 기대했습니다....
-
ㅈㄴ풀기싫게생겼다
-
자야겠지 0 0
또 공부를 해야하니까
-
아씨발근데미적2공부어케하지 1 1
수학만되면돌대가리되는병을6개월안에고쳐야돼
-
내신망한수시충 1 0
0.7등급떨어짐 5등급제임
-
우우래우우래 6 1
나는스카이에갈수없어 내가갈수잇는스카이는하늘나라뿐
-
닉변해야겠다 7 0
추천좀
-
오듣노 50일차 6 1
.레미제라블 중 One Day More
-
갑자기 비 무슨 일임 0 0
아니 갑자기 쏟아진다고?
-
이바보야진짜아니야 1 2
아직도나를그렇게몰라
-
50일차 7 2
개꿀 (진짜 이름이 개꿀임) 알파 모고 4회 공통만 세지 기후 깔짝
-
과탐 그냥 암기 ㅈㄴ해야겟다 3 0
지능이안좋으면외우기라도잘해야지
-
자 여러분 모이세요 28 0
다 같이 한번 울고 갑시다. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
-
타부운~ 1 1
와타시쟈나쿠테이이니~
-
사이테다 고만다 1 1
키미모민나돈요쿠다
-
딱 하나 그리운건 4 2
과거의 나
-
자위하다쥐난적있냐 5 0
햄스트링이랑 종아리 씨발 난생처음보는고통이였다진짜씨발 소리지를라했는데 소리도안나오고
-
고속버스 여행이 재밌음 2 0
나중에 한 번 해보삼 고속 버스 타고 여행가는 낭만이 있음
-
아직 안자는 사람 18 0
궁금한게 있어
-
아오 2 0
ㅈㅏㅁ이안와
-
여사친이 톡으로 노노 거리길래 반가워서 "개웃기다노" 했더니 3 0
그런말이 있냐면서 너 원베냐면서 손절당함 ㅜ 너가 먼저 썼다노..
-
지2 매기분 1강-7강 (1~62) 1단원 전체 수강 완료 기하 시발점(이전에...
-
6모 수학 후기 0 0
작수 99 6모 96점(22) 22답 18썻는데 어케푸노 30분남음
-
애기 때 내가 바닷물을 다 삼켜버리는 상상을 하곤 했는데
-
제 남편 사진 공유합니다 2 0
-
시기별 좋아했던 가수/그룹들 2 0
2018(11살): 레드벨벳 2019(12살): 아리아나 그란데, 마룬파이브,...
-
카투사 기원 7+6일차 0 0
-
드디어 방학 시작이구나 2 0
고작 한달동안 성적 올리는건 기대하면 안되겠지
-
에너지드링크가 6 0
은근히돈이많이나가네
-
어삼쉬사 1 0
수학 안정 4등급이 목표인데요 현재 낮은4가 나옵니다 엔기출3점짜리는 다끝냈고요...
-
말도안돼 3 0
담배 안핀지 3주됨
-
수학 언제오르지 0 0
ㅠㅠ
-
비둘기야 밥 먹자 0 0
구구구구구
-
부모님 설득하는 법 좀 알려주셈 22 0
입시 컨설턴트를 받고 싶었는데 부모님은 내 성적이 안 좋아서 성적 올리는 게 먼저라...
-
디오더블쥐~ 1 0
스눕도기독
-
국어 감 다떨어졌다 1 1
빨리 나무위키 봐야함
-
오랜만이에요다들 8 3
요즘 오르비는 조용한가요?


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

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