컴공 일기257
게시글 주소: https://i.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를 선물하세요.
-
임신 5
배불룩
-
쉽다고평가받는 24생2 현장에서푸는데 7번 광합성 안풀려서 시간다씀 그뒤 제효 하디...
-
라식이나 충치 12
본인 돈으로 해본사람 있나요
-
과잠에 자기과 안 적힌 거 입고 다니는 애들도 많음? 7
낮과애들은 학과 자부심 없는 경우 많지 않나
-
굳이 커뮤니티까지 와서 하는짓이 애니프사 욕하기 말투 맘에 안든다고 욕하기 이런...
-
정시로 14명 뽑는 과고 실제지원자 27명중에 2등이고 전체지원자 100명중에...
-
ㅈㄱㄴ 아 그리고 요즘은 육군 운전병도 할만함? 우리 아빠가 육군 운전병이셨는데...
-
65명 뽑는 과인데 (실지원자 245명중) 제가 45등임... 새로생긴 전형이라...
-
영화 끝나서 들어왔는데 11
왜 애니프사 저격 메타임뇨... 메인에 무슨 일이 있던 거죠..
-
심심한데 뭐 할 거 업ㄹ냐
-
편입으로 메디컬 다니고 있는데 과외 모집할겸 한번 와봤습니다 궁금한거 있으면 남겨주세요
-
16학년도 6월 평가원 물리2 20번 문제에영. 중력끄기+축돌리기로 풀 수도 있지만...
-
기숙사 코골이 4
제가 비염이 정말 심해서 코를 좀 고는 편인데 기숙사에서 룸메랑 잘 지낼 수...
-
이제 스무살된거라 1월초에 약속이 몇개 있는데 빠져도 재수학원 빠져야할거같은데...
-
이번 수능 92점 22번,28번 틀 준킬러 이상급으로 구성된 N제 하나랑 하프모...
-
24수능 국어영역 시험장 첫번째지문 ‘초성자용자례’ 보자마자 이새끼뭐노 했음
-
진짜 심란한게 63
육사 가입교 얼마 안남아서 이것저것 유튜브로 찾아보고있는데 걍 뉴스부터가 육사...
-
나가토 유키 Yuki Nagato 长门 有希 長門 有希 무슨 애니인지 아는 사람 있으려나
-
ㄴㅇㅅ
-
진학사 실제지원자 중에 2등이여도 표본분석 해야함? 2
정시로 14명 뽑는 학과고 실제지원자 27명중에 2등이고 (적정표본이 33명인데...
-
가려워요 히히
-
한양대 산업공 많이 별로 인가요 도시공 환경공보다 높지 않나요..? 다들 한양대...
-
455찍은날에 뭐했지 칼춤췄나?
-
컨저링123, 더넌12, 곤지암, 곡성, 링, 에나벨, It 빼고여... (이미 봄)
-
ㅈㄱㄴ
-
어떤 여자애가 6
가슴나오면서 등이 굽었다는 개헛소리 하던데 도대체 얼마나 무거운거임?
-
나야나 19 22 27
-
국어 노베 수능 14
Ebs가서 기초강의듣고 올오카 들어야하나요? 영어 같은경우는 이명학 들으려다가...
-
가나다 싹다 허수처리 됐는데 이거 왜이래요? 성적인증도 했고 수시 불합격도 해놨는데
-
ㅇㅈ 내놔 2
.
-
제가 갈려는 진로는 어차피 대학원이 중요해서 대학교 자체에 대한 특별한 선호가...
-
수학 기출문제집 4
컴팩트한거 뭐 없을까요? 주요 기출만 모아져있는걸루요 수분감은 틀딱이 많아서 별로같아요
-
일단 저부터 가채점보다 점수 오름
-
옛날에는 돈 총 주먹 권력 이런게 무서웠는데 지금은 사람이 제일 무섭고 나조차도...
-
2024.11.14부터 2025.2.7 약 3개월동안 1. 실채점 등급컷 상승 2....
-
연애 고수분들 7
채팅으로 어쭤보고 싶은거 있어요 자기가 여자 심리를 잘안다거나 연애 고수다 하면 ㄱㄱ
-
하.. 고민되네 둘다 취업은 잘 된다는데
-
하얼빈 0
하얼빈 보고 나서 그동안 내가 부끄럽다고 생각했던 것들이 너무 하찮게 느껴졌다.
-
계속질문해서ㅈㅅ요 13명 뽑는과에 10등이에요 지금 39명들어와잇어요 (적정표본수는...
-
2030년이 될때까지 Schmidt의 모쏠 탈출에 투표하라. 1
ㅇㅇ 일단 느낌상 25.5월에 입대 27.2에 전역이긴함
-
옲평 ㅋㅋㅋㅋ
-
진학사 질문 1
여기 변동 추이 리포트랑 허수분석은 정확히 뭘 해주는건가요?
-
많이 불리한가요……???
-
정시수시 합쳐서 대학 실적순으로 줄 세웠을 때 ㅇㅇ 물론 현역 기준이고 24명임
-
돌면 삼수해야 해요....제발 안 돌았으면
-
애니프사단 욕먹음? 12
왜?
-
흠…
-
아님 앞에서 시간다뺏겨서 못푸는정도? 4페이지 18번하나밖에 풀수있는게없어서 난도를 모르겠음
-
점수대 촘촘하다고 가능성 없다들엇는데
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요