컴공 일기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를 선물하세요.
-
와씨 지금 시즌1보고있는데 개꿀잼이네,,,,ㅎㄷㄷ
-
스나 0
서울대381.4 0칸 고대학부대학 1칸 뭐쓸까요?
-
걍 시작 안 하려고 롤 방송 같은 거 제대로 못 즐기는 건 좀 아쉽긴 한데 그냥 안 하기로 했다
-
ㅋㅋㅋㅋㅋ
-
진학사사사 0
나군에 설대 가다에 의대는무ㅜ죠 저라면 가고싶은학과로 서연고쓸듯해여
-
키빼몸 유행이던데 남자 키 183에 72-3키로면 어떰? 1
키빼몸 유행이라 적어봄 남자고 키 183에 72-3키로 유지하는데 어떰? 관리 개빡세게 하긴 함
-
진학사 기준 3칸 고속으로는 연한녹색이였나 50~79 %로 계산해주는데 왜 이렇게...
-
안정 하나를 다군에다가 박고싶은데 메디컬은 애매하고 걍 서강ai 쓸까
-
ㅈㄱㄴ
-
국어 : 93 (수능) -> 94 (6모) -> 95 (9모) 수학 : 92...
-
진학사 성적표 인증안해도 모의지원 바꿀 수 있나요? 1
어제도 그렇고 오늘도 미인증표본인데 업뎃끝나니깐 들어와있던데 성적표 인증을 안해도...
-
우석약 0
우석약이 젤 낮은 약대인가요?
-
교사들은 왜 5
정시파이터를 싫어할까요
-
https://orbi.kr/00070846789#c_70846844 증거임
-
근황 3
이게되네 솔직히 점수 보니까 최종은 안 될 거 같은데 일단 마음의 짐을 조금은 덜었다.
-
진짜 ㅈㄴ피곤한데 이걸 어케하는거지 님들 ㄹㅇ대단함
-
3->2->1->2(×4)->3 찍었으니 이젠 등차수열로 4가 기다리는건가
-
둘 중 순수 입결로만 놓고 보면 어디가 더 높은가요?
-
47~50을 가장 고정적이고 안정적으로 받을 수 있는 과탐은 뭔가요? 1
등급컷이나 표점, 백분위 등 전혀 고려하지 않고요.
-
이주호 교육부총리 겸 교육부장관 겸 국무총리권한대행 겸 대통령권한대행 4
이라고 하면 안되겠죠?
-
ㄱ.
-
오겜2 빅뱅 탑 0
대마 사건때문에 그런지 더 무섭다 ㅜㅜ
-
ㅈㄱㄴ입니다(거리 상관 없이)
-
내일이면 최상목 경제부총리 겸 기획재정부 장관 겸 국무총리 직무대행 겸 대통령 권한대행 볼 수 있는 건가 3
기대되는군 물론 옆나라 일본에서는 더한 것도 많지만.... 하타 쓰토무 내각총리대신...
-
아무나말고
-
오르비 왤케 노잼됨 18
22수능때가 개꿀잼이고 23수능때만해도 그럭저럭 재밌었는데 흠냐…
-
재수생무물보 4
-
쎈,쎈시리즈 개념원리 rpm 수학의정석 마플교과서 마플시너지 마플수능기출총정리...
-
구라임
-
역시나 친구 얘기임 (ㄹㅇ) 생활과 윤리 올해 5등급 문과인데 내생각에 얘가...
-
그만 쫄여 국 베린다...
-
세종이나 인하 공대 쓸 정도의 성적임.. 나군 지르려고 하고 가나군에서 그럼...
-
메디컬 지망하는 n수생인데요 국수는 어떻게든 될 것 같은데 과탐이 도저히 안 되네요...
-
기억나네 ㄷㄷ
-
1. 수시 넣은거 2. 11월 4일에 오르비언의 절대금기 버튼을 눌러버린것 3....
-
무물보 14
아무거나 물어봐주세여
-
Qna 0
한석원 Qna빠른편인가요?
-
이거어캄요 0
이제 고삼되는데 개념 강의 듣느라 자습시간0됏어요 인강만 ㅈ빠지게 듣는데 공부하는거...
-
사람 본 적 있나요?
-
설컴을 가고싶었는데 12
죽을때까지 못 이룰 꿈이되었네
-
강대 의대관 0
이번 정규시즌부터는 사탐선택자도 의대관 받아주던데 최저도 사탐으로 맞출수있을까요?
-
재수 수학 개념 0
수학 개념 정리하고싶은데 뉴런으로 해도되나요 책만 읽으려는데 이번수능...
-
빨리 내신 안버린거 그냥 답안나오면 버리는게 정답입니다 담임이나 부모님이 말려서...
-
ㅜ
-
읽을 게 넘쳐나 0
아 읽을 게 너무 많아서 시작할 엄두가 안 나노 무턱대고 막 논문 다운받으면 안...
-
인하대 공대 입결,수준 17
중학교 때 되게 공부 잘했었던 애 있었는데, 오랜만에 만남. 인하대...
-
입시끝났다고 탈릅을 왜 함 ㄹㅇ ㅋㅋ
-
짜릿하군
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요