컴공 일기257
게시글 주소: https://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를 선물하세요.
-
집은 대전이고 둘중 간다면 어디 가실건가여
-
있으면 알려주라
-
본인 예비 고3(07) 서울에 거주 중이고 현재 상태 고2 9,10모 국수영 3...
-
5상향에 딱 하나 1소신 넣은건데 예비 90번 뜨길래 맘편히 있었는데에 벌써 내가...
-
수고비 35000원 택배비 5000원 드립니다. 총 두 과목 받아주시면 됩니다. 연락주세요.
-
짱구 공룡편 혼영이나 해야겠당
-
11월 시험침 12월 결과나옴 1월 원서접수함 2월 발표함 2월 말에 추합 발표함...
-
고대뱃지받고싶다 0
학추 역대급 폭이네 ㅁㅊ
-
높공인건가 흠
-
서성한 12
서강대 컴공 성대 전전,소프트 냥대 화공 3중에 어디가 좋나요
-
언매 vs 화작 4
문과계열 서성한 이상 생각 중인 예비 고3입니다. 수학은 확통, 사탐은 사문, 정법...
-
한 문제 정도 더 맞추면 2+인데 아쉽네요.
-
특히 벡터, 공도 해설지 보면 물론 이게 정공법인 거 아는데 왜 이렇게 풀어 그냥...
-
탈릅하기엔 여기가 분위기 따스하니 아쉽고 안하기엔 2월달에 발표 시즌되면 합격증...
-
이렇게 쓰면 세개다 붙을까 모르겠네 가군 나군은 대형과라 크게 칸수가 변할거 같진 않아보이는데
-
제발.. 붙or떨 확률 뭐가 높아보임 31명모집이에요
-
중앙대 외대 중경외시 건국대 건대 라인 낙지 이정도면 적정으로 봐도 되나요?
-
윤 대통령 지지율, 국회 탄핵안 가결 후 30%대 회복 [데일리안 여론조사] 22
[데일리안 = 송오미 기자] 지난 14일 국회 탄핵소추안 가결 후 윤석열 대통령과...
-
공도 삼수선정리가 더더욱 그런데 얘를 논리적으로도 안뚫리고 공간적으로도 ????함...
-
성적높은 친구들이 다군에 고대밖에 쓸데가없네
-
확통은 뭐 팁이라고 할 만한 게 없네
-
알바사장 개빡침 0
원래 나가는 날도 아닌데 나오라고 해서 안된다니까 이유 개 끈질기게 묻더니 결국...
-
김승리 1
김승리쌤 주간계획표는 어디에 올라와있나요??
-
지역교과 입니다. 혹시 계신가요??
-
삼반수 0
재수때 6,9모 34311 13311 이었고 국어실모는 2밑으로 떨어진적 단 한...
-
아무 생각없이 푼 공도 문제 그림을 다시 보니까 삼수선을 찍찍 그어놨음 ㅋㅋ 너무...
-
복학 전 외붕이의 외대 이모저모 (입결, 경영복전 포함) 12
10월 전역하구 정신없이 두 달 쳐놀다보니 슬슬 정시철이더라구요 에타 새내기게시판...
-
전 극호
-
며칠 동안 계속 나무위키 실검에 있는거임? 듣도보도 못한 내용인데 좀 치우지
-
한의대 다니시는 분들 10
한의대 공부 얼마나 빡센가요? 빡세다면 공부한 만큼 보상받는다고 생각하시나요??
-
어떤 게 좋을까
-
https://orbi.kr/00070838462/%EB%82%98%20%EC%99%...
-
신소재 전전 1
신소재 vs 전자공 하면 닥후인가요?? 가군에 전자공을 쓰고 가군상향카드를 버릴지...
-
둘다 쓰면 붙을거같은데(둘다 낙지 7칸 ) 둘중에 뭐가 나을거같나요?
-
30등에서 37등으로 밀렸다..
-
수도권+서울 사람이 10퍼도 안된다는데 가면 적응하기 힘들까요? 충남대랑 고민중인데...
-
이걸 들어가 말아?
-
정시 원서 추천 0
매디컬 쪽 알아보는데 주위에 간 사람이 거의 없어서 추천 받아봄 1. 가천대 의대...
-
랄집자 짜르자
-
캬 예비 3번이 4차까지 안빠지는 학과 응 내년에 고대 안쓸거야 ㅗㅗㅗㅗㅗㅗ
-
[기하] 자잘한 팁 21
생각날때마다 추가 예정 이차곡선 1. 이차곡선은 정의가 우선이다 정의를 표시하고...
-
추천 해주실수 있을까요?? 과외용으로 쓰려고요 한석원 4점기출 괜찮나요?
-
에타에 막 우와~ 서강대 합격했어요!!! 이러는데 너무 귀여움 벌써 내 동생 나이대...
-
왜 공간벡터, 직선의 방정식, 평면의 방정식이 빠졌는 지 높으신 분들의 생각을 전혀 모르겠습니다
-
고대 끝! 2
이렇게 된 이상 내년에 서울대 정문을 부순다
-
약대 병원네임 5
약대도 병원 네임밸류가 중요함?? 인제대 약대면 백병원 있는데 좋은건가 아님 그냥 별개?
-
아니 씨발 뉴스 틀때마다 계속 스카이 44% 등록 안했다 이지랄인데 추합은 왜이렇게 안빠짐??
-
숙대 약대 vs 지거국 약대 (부산경북x) 어디감? 여대를 가긴 싫은데 위치는...
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요