컴공 일기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를 선물하세요.
-
전공 빼곤 실질적으로 아는 것도 없어보이는데 음악이 어쩌니, 유튜브가 어쩌니,...
-
여자가 4분밖에 없어서 우러써
-
사실상 공대잖아
-
국어는 잘 질문이 안올라오는 편인가요? 아직 합격증 없어서 기다리는중인데 해볼생각 있네요
-
서울이 너무 좋은데 지방 유배 당할 생각하니까 답답하다 강남 쪽에서만 살아봐서...
-
우리나라가 0
종북은 치기어린 행동으로 보고 별관심이 없는데 누구의 친일 논란 이런거에는 너무 엄격함
-
중학교때 놀아서 수학 ‘가’ 받고 기초가 없으니까 지금 수학이 너무 어렵다
-
이거부르면 세특써준다던 할배영어샘,
-
영화리뷰 채널에서 봤는데 재밌당 여주가 개씨발년인건 알겠음
-
일반론적으로 0
이 말 아는 사람?
-
확통 개념 0
예비 고3 인데 확통 개념은 개정 시발점으로 할까요 기존 시발점으로 할까요? 또는...
-
세종대 추합 0
세종대 이과쪽은 추합많이 도는편인가요??
-
실제 활동자 0
오르비 실제 활동자들이 얼마나 될까요
-
‘부정선거 유포 처벌법안’ 나왔다…“표현자유 침해” 비판도 [지금뉴스] 1
부정선거 의혹을 유포한 사람을 처벌하는 내용의 법안이 발의됐습니다. 정춘생 의원 등...
-
앞에서 cc빔 많이 안맞을까요
-
중딩 때 선행충이라서 유물이 많음.... 생각해보니 07이 현역인 시점에서 올드스쿨은 맞음....
-
6->1 이런거 많은쌤이 좋은건가요?? 저는 4등급입니다..
-
ㄹㅇ...
-
반수할까요… 0
수시반수를 할까 고민중입니다.. 원서를 잘못써서 내신 점수랑 수능 성적보다 낮은...
-
볼 때마다 이사람이 어디 썼더라 하고 헷갈림
-
군청과 봄망초를 마스터하는 그날까지
-
서울대 윤교 14
가군 고대 경영 다군 성대 글경인 395.1? 이셨나 그분 고대로 빠집니다 새별비분...
-
낮추는게 나을까요?
-
대가리로는 윈트북 사야된다는 걸 아는데 가슴이 시키는데…
-
전교 꼴등 교사한테 수행평가 할 때 남한테 피해주기 싫다며 자기는 평가에서 빼고...
-
정시 선택 0
언매 확통 생명 생윤 이과지원 가능?
-
어 난 돈없는 돼지야
-
책상에 엎드려 자면서 짝녀랑 섹스하는 상상하는 꿈을 꿨음 문제는 잠꼬대를 ㅈㄴ 크게...
-
자랑?같은거함 6
되게 오래전 수학의정석 아버지가 주셨는데 뭔가 이걸 가지고 있는것만으로도 수학천재가...
-
반장이었는데 애들도 다 싫어하는 개꼰대 담임이랑 맞짱떠서 계속 어색하게 지냈었음...
-
메디컬 점공률 0
메디컬은 원래 합격권 표본 점공률이 높은 편인가요? 전체 점공률이 작년보다 확...
-
고2 한국사 기말칠 때 위 제시문의 시대적 배경을 서술하시오 이런 문제였는데...
-
난 고등학교 재입학하는 꿈임 내신 1.0을 위해 재입학했는데 뭔가 꼬여서 내신...
-
점공률 60퍼센트에 등수가 모집인원-2이면 좀 위험함? 3
여기 떨어지면 갈 곳 없음 ㅇㅇ 많이 위험한가여
-
렉스김/ILE/PEAI 생각하는 황소 CMS/엠솔/올림피아드 다원 시리우스
-
내 친구들이랑 두세명 빼고는 꼴도 보기 싫음
-
이건 닥전임듯
-
아이크림발라볼가요,
-
몸에 맞지 않는 옷을 입은채 태어나 벗는게 불가능하지는 않겠지만 엄두도 안나고 너무...
-
Englishman in New York 가사 중간 빈칸 뚫어두고 서술형으로 채우게...
-
파닭도 타코야끼도 불닭도 초밥도 치킨도..
-
고등학교 때 다녔던 수학 학원 가서 선생님이랑 밥 먹었는데 원서 얘기 나와서 “ 아...
-
형왔다 9
인사해라
-
올해 지역인재 의대가 1.5까지 뚫렸다는 얘기를 들으니 기분이 참… 3년 내내...
-
영어 발표수행인데 선생님들끼리 회의 안됐다고 평가기준 안정해두고 수행봄 ㅋㅋㅋㅋ...
-
대가리에 들어오지도 않는 영어 꾸역꾸역 외우기 개같은 제2외 수능특강 벅벅 암기하기...
-
틀주의) 7
에잉 요즘 샤인미는 좀 쉬?워졌어 미적은 ㅇㅈ인데 공통 무ㅜ냐
-
고1 모의고사도 4등급이었어
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요