컴공 일기257
게시글 주소: https://9.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를 선물하세요.
-
이분 잘생김? 9
ㅇㅇ
-
잇올+단과로 생각중인데 단과는 수학만 할 예정입니다 단과는 어디가좋나요..??...
-
Midv -032 17
야밤의 품번추천
-
그럼 임시공휴일날 무시하고 그냥 발표하려나?
-
한석원의 1
-
지우가누구에요 3
?
-
자야징 7
ㅂ.ㅂ
-
4년?만인가 교사경+n제라 다들 양치기용으로 썼는데
-
ㅇㅇ?
-
10살때 일이었습니다. 피아노 학원 가기전에 아파트 단지에서 같이 놀던 여자애들이...
-
얼버기 9
갓생 8일차.
-
고대 통계 3
662는 가망 없을까요
-
與 "민주, 카톡 검열로 사상 통제"…野 "검열 아닌 가짜뉴스 대응" 8
與특위 '나도 고발해줘' 캠페인…전용기 "여당이 불법행위 부추겨" (서울=연합뉴스)...
-
재수준비하면 이제 못봐ㅜ
-
첫사랑 썰 풀까 2
재미없긴한데
-
그러면 만백 91정도 나왔을거같은데 차라리 ㄱ,랬으면 좋았을듯
-
샤머니즘 ㅋㅋㅋㅋㅋㅋㅋ (샤 머니 줌) 엌ㅋㅋㅋㅋㅋㅋㅋㅋ
-
뒷북이긴 한데 7
헬스터디라는 사례를 보고도 공부 한애들중에 10퍼가 의대라는말이 나오나 헬스터디,...
-
쵸비 4
쵸비랑사귀고싶음
-
난잘먹고잘살기에~~
-
카톡계엄하면 5
dm하면 되지 dm도 계엄하면 텔레그램이 국민메신저가 되는 상황이 올지도
-
진학사 점공 제 위 표본 1순위 지망은 안빠지는건가요? 0
70명 뽑는데 제 위 표본중 46명이 1순위 지망입니다.. 그러면 46명은 절대로...
-
지면 알지? 4
이겨라 아스날.
-
부엉부엉 1
부엉
-
상남자식 축구 2
'승부차기'
-
초딩때 아는 여사친 통해서 알게된 여자한테 카톡으로 고백했는데 받아 줬음 근데 대화...
-
배고파 죽겠음뇨 4
그럼 죽어
-
얼굴이 부각되어야 함
-
잘자요 5
씻고왓어요 다들굿밤
-
이 말 자체가 인서울 대학을 뜻하는건데 단국대는 인서울 아니니까 빼야하지않음?...
-
삼수할까 1
낭만있게 다시 도전해볼까..
-
내일목표 2
돈 0원쓰기
-
ㅇㅈ 3
'새로운 질서' 중건시경 외동홍 국가숭세단
-
아까 전애인 메타랑 잘 맞는듯
-
11월 쌀쌀 맞기 시작할 적엔 수능냄새 1-2월 한창 한파땐 졸업식때 냄새 가끔은...
-
생지 선택자수 1
내년에 몇명씩빠질거가틈요?
-
23킬캠 84점밖에 안나온다고 울고있을 때였어요
-
186-190보다 161-165가 더 많네ㄷㄷ이왜진
-
아 0
눈간지러
-
안녕하세요 재수로 고대 경영을 진학해 삼반수로 수능을 응시한 여학생인데요 이번...
-
재밌는거 인증 2
이원준 1타시절 교재
-
이게 4년전이라니 시간 왜이러냐
-
ㅇㅈ 5
여친이랑 여친 친구랑 대화중인거 ㅇㅈ
-
가슴이 뛰는 그런 미래를 품고 살아가길 바란다. 나도 그렇게 살고싶은데 어렵다
-
초희귀템 ㅇㅈ) 10
퍼즐
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요