컴공 일기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를 선물하세요.
-
쌈@뽕하네 ??????????
-
"연애할 가능성이 있는 상태"로 남아있고 싶기 때문... 옯붕이들과 대학 사이의 관계와 비슷할듯
-
수학 5->1 까지 올렸는데 국어는 3에서 벗어나질 못하네 수영탐은 노력으로 되는데 국어가 찐인듯
-
3명 뽑는 과이고 현재 9명 지원함 점공은 6명 점수공개 그 중에 1등임 셈퍼님...
-
연대 문과 1
국어 표점 3점 오르면 연대식으로 몇점 오르나요??
-
머이런상태가
-
서울대 학부대학 1
설대 학부대학 1차 몇점까지 합격하셨는지 궁금합니다!
-
고대조발 2
고대조발원해요
-
세이프
-
(1)번 극한값 구하는 문제인데요 무리함수 그래프 그려서 극한값 2는 구했어여 근데...
-
대학공부요 ㅇㅇ...
-
연대 가면 하고싶은거 14
응원단 들어가기(응원복 이쁘고 춤도 춰보고싶어요) 아카라카, 연고전 가기
-
민주주의의가치를인정하며 자유도보장하는그런보수는없을까?
-
뭔가 얼굴, 성격 이런거로 딱 정의가 안 되는데 이성적 끌림<< 이거 봄 같은...
-
요즘 잠 자려고 누우면 인생 망한 것 같아서 잠 2시간씩 못 자고 그래요… 내년에...
-
메디컬x 인서울 상위대학 이과 목표인 사람 기준 ) 표점차이 좀 나도 점수안나오는...
-
지방대 메디컬중에 제일 인프라 열악한곳이 어디일까요 8
목포약 근처 한번 가보긴했는데 진짜 살벌함....
-
계속 왜 묻기 3
무료유저라서 끊기네여
-
세트메뉴 시추안 치킨 세트? 그거 먹었는데 향신료가 너무 강렬한데 무슨 한여름에...
-
웬만한 실전개념이랑 중요내용 다 담고있어서 뉴런 없어도 진짜 2이상 나올듯.....
-
장난도 치면서 막 웃어주는데 역시 미용실 가길 잘한듯
-
많이 계시는 것 같음뇨
-
ㅋㅋ
-
흠
-
공대 희망하는 내신 4.5인 내 친구가 한 발언.... 자기는 서울대 준다 해도...
-
국어 인강안듣고 11
혼자 교재 풀고 해설지 읽으면 안돼? 강의가 좋긴좋은데 다 들으려면 시간 ㅈㄴ오래걸릴듯..
-
한완기 문제 수 세보니까 파트0 제외하고 수1 수2 미적 다 합쳐서 1974문제...
-
이렇게 된 이상 6
관악을 노린다 설정외 딱대
-
수능/논술/내신을 위한 기하 단권화 태도노트 제작 중입니다. 노베에서 반년만에 기하...
-
긱사살까 자취할까 24
장점- 1) 가격이 쌈 2) 밥 꼬박 나오고 가까움 3) 상대적으로 덜 위험 단점-...
-
ㅇㄱㄹㅇ임뇨... 우리 할머니 할아버지는 안 그러시는데 지하철 타다보면...
-
감 거의 완벽하게 되찾는데까지 얼마나 걸렸는지 알 수 있을까용
-
급 졸려요 2
-
C4 2킬 레전드 ㅋㅋ 어캐했누 아니 탱크에 C4 붙였는데 못봤는지 안도망가는거임...
-
1. 미적과의 만표차의 변수 25수능 1점차가 이례적인거지 많이 나면 6점까지도...
-
1500원 들고 가서 3곡 부르고 나왔어요. don't look back in...
-
문과 기준 7월쯤 들어가고 싶으면 언제 걸어놔야 하는지 궁금함뇨 그리고 늦게...
-
일가친척 최고학벌 쓰고가실래요 158
대학에 학과까지 수석입학 수석졸업 등의 특이사항 ok 본인제외
-
국민대 합격생을 위한 노크선배 꿀팁 [국민대25][새내기를 위한 장학금 A to Z] 0
대학커뮤니티 노크에서 선발한 국민대 선배가 오르비에 있는 예비 국민대학생, 국민대...
-
경희 1
556.61 산업경영공 어떻게 될까요.. 점공은 별로 안들어오고.. 떨어지겠죠…?
-
윈터스쿨에서의 하루.. 토요일,일요일까지 이렇게 하면 지칠것 같아서 토일은 조금...
-
진짜로 미적이들이 12등급 다 쓸어가고 기하가 4%도 선택하지 않을 줄은......
-
작수때 선택 다 찍어서 이렇게 5 떴는데 뭘 어떻게 시작해야 되는지...
-
진지하게 아무거나 에서부터 원인을 계속 물어보면 안됨? 2
누가좀 해줘
-
ㅈㄱㄴ
-
그냥 일어나서 수업듣고 복습하고 개념정리하고 실모풀고 오답하고 6모 9모 치르고...
-
프변완 7
-
이건 아닌거같다 자기 자리 찾아가기 어렵게 만드는 원흉 아닌가
-
그때도 받는 용돈이 월 60 지금도 월 60이었는데 지출은 지금이 훨씬 더 많으니까...
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요