컴공 일기257
게시글 주소: https://wwww.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를 선물하세요.
-
군청과 봄망초를 마스터하는 그날까지
-
서울대 윤교 8
가군 고대 경영 다군 성대 글경인 395.1? 이셨나 그분 고대로 빠집니다...
-
낮추는게 나을까요?
-
대가리로는 윈트북 사야된다는 걸 아는데 가슴이 시키는데…
-
전교 꼴등 교사한테 수행평가 할 때 남한테 피해주기 싫다며 자기는 평가에서 빼고...
-
정시 선택 0
언매 확통 생명 생윤 이과지원 가능?
-
어 난 돈없는 돼지야
-
책상에 엎드려 자면서 짝녀랑 섹스하는 상상하는 꿈을 꿨음 문제는 잠꼬대를 ㅈㄴ 크게...
-
자랑?같은거함 6
되게 오래전 수학의정석 아버지가 주셨는데 뭔가 이걸 가지고 있는것만으로도 수학천재가...
-
반장이었는데 애들도 다 싫어하는 개꼰대 담임이랑 맞짱떠서 계속 어색하게 지냈었음...
-
메디컬 점공률 0
메디컬은 원래 합격권 표본 점공률이 높은 편인가요? 전체 점공률이 작년보다 확...
-
고2 한국사 기말칠 때 위 제시문의 시대적 배경을 서술하시오 이런 문제였는데...
-
난 고등학교 재입학하는 꿈임 내신 1.0을 위해 재입학했는데 뭔가 꼬여서 내신...
-
칼바람 하실분? 3
긍정적분#9999 친추좀..
-
점공률 60퍼센트에 등수가 모집인원-2이면 좀 위험함? 3
여기 떨어지면 갈 곳 없음 ㅇㅇ 많이 위험한가여
-
렉스김/ILE/PEAI 생각하는 황소 CMS/엠솔/올림피아드 다원 시리우스
-
내 친구들이랑 두세명 빼고는 꼴도 보기 싫음
-
이건 닥전임듯
-
아이크림발라볼가요,
-
몸에 맞지 않는 옷을 입은채 태어나 벗는게 불가능하지는 않겠지만 엄두도 안나고 너무...
-
Englishman in New York 가사 중간 빈칸 뚫어두고 서술형으로 채우게...
-
파닭도 타코야끼도 불닭도 초밥도 치킨도..
-
고등학교 때 다녔던 수학 학원 가서 선생님이랑 밥 먹었는데 원서 얘기 나와서 “ 아...
-
형왔다 9
인사해라
-
올해 지역인재 의대가 1.5까지 뚫렸다는 얘기를 들으니 기분이 참… 3년 내내...
-
영어 발표수행인데 선생님들끼리 회의 안됐다고 평가기준 안정해두고 수행봄 ㅋㅋㅋㅋ...
-
대가리에 들어오지도 않는 영어 꾸역꾸역 외우기 개같은 제2외 수능특강 벅벅 암기하기...
-
틀주의) 7
에잉 요즘 샤인미는 좀 쉬?워졌어 미적은 ㅇㅈ인데 공통 무ㅜ냐
-
고1 모의고사도 4등급이었어
-
확통 모둠원 4명이서 50명정도 표본조사해서 모평균 추청하는 포스터랑 엑셀 만드는...
-
그래그래 이거지 6
(사실 돈없는데 먹고싶어서 짤가져옴)
-
맞팔 구합니다 4
제 소개를 하자면 25수능 한국사 원점수14로 높은 7등급입니다 잘 부탁드립니다
-
3칸스나붙어야합니뇨이..
-
안녕히주무세요 6
좋은 꿈꾸시고 내일뵈요
-
제 동생은 다운로드 해서 듣는더는데 저 인강 볼동안 얘 만약 로드인해서 들어도 안꺼나나요?
-
누가 봐도 억까인데 그냥 그걸 감수하고 딴거 잘해서 등급을 따야 하는 경우가...
-
미리 사두게 말좀해줘
-
아가들아 14
첫번째사진은 2019버전인데 오타임
-
셈퍼님 계산기 잘 맞던가요
-
내신 쉬운 학교에서 1점 중후반 받는 수시러입니다 3합 6 최저 맞추는게 목표에요....
-
걍 그때 엎어버릴걸
-
뭐고름?
-
국어 커리 0
독서 김동욱 문학 박광일 로 가도 괜찮을까요?
-
님 판단이 맞고 부모님이 틀린거 맞다. 그래도 그런 부모님을 용서해드려라 그리고 님...
-
교수 ㅇㅋㅎㄴ
-
1등이랑 꼴찌랑 20점 이내일때 cc랑 bb는 얼마나 차이나는 건가요??
-
서울대 1
서울대 70퍼 컷
-
거리적인 부분은 제외하고 대학 급간으로만 봤을 때 어디로 가는게 나을까요.?ㅠ...
-
시발점은 개정으로 샀는데 쎈은 멀로 사야하지
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요