컴공 일기257
게시글 주소: https://app.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를 선물하세요.
-
손가락 모양보고 노래 재생하거나 일시정지하거나 볼륨 높이거나 줄이는 것도 있음
-
맞팔구 1
-
으흐흐
-
사람이랑 대화하는 거같고 좋다..!
-
지방러들 시대라이브반 26
학교에 얼마나 퍼짐? 나는 학교에 내가 ㅈㄴ 바이럴해서 좀 많이퍼져서 20 명은...
-
지금 농어촌인 곳이 정해진지가 엄청 오래된 걸로 암 그래서 이미 발전했는데도 계속...
-
원숭이가! 이상한소리를! 지르으네!
-
하지만 미적분하는 순간 모고점수와 내신점수가 수렴하게 되겠지..?
-
강민철 1
-
연세대 교환학생 3
미국으로 교환학생을 너무 가고싶은데 1학년 입학 전에 토플 어느정도 만들어놓는게...
-
[고려대학교 25학번 합격] 합격자를 위한 고려대 25 단톡방을 소개합니다. 0
고려대 25학번 합격자를 위한 고려대 클루x노크 오픈채팅방을 소개합니다. 24학번...
-
부엉이 폰 5
잠깐 나갈 때 들고가도됨? 하원카드 찍고
-
김진영쌤 현강 듣는데 중간에 김진영쌤도 나옴.. 영수쌤 두각에서 많이 마주쳐서...
-
이거 감기네
-
한석원의 4의 규칙 시즌2, 문제 해결 전략 시즌2둘중에 무엇이 나을까요..
-
금테다나?
-
국어는 그나마 안전할거 같고 수학은 ㄹㅇ 강k 짝수회차급까지 될수도.. 강k짝수회차...
-
구글 드라이브에 11
파이썬 콜라츠 추측에 관한거 만들었었네 언제 만들었지..
-
많이도 없어졌구나… 내년에 오면 그래도 내가 생각하는 두 사람은 있겠지..? 남아줘요
-
연대야 연대야 딸깍해 오너라 등록금 바로 줄게 연대야 연대야 성댄 이미 끝냈다...
-
지금 저는 정승제t 개때잡 개시팔시 솔루션을 진행하고 있습니다(6월달 까지 일정이...
-
자꾸 뽀뽀하려고 하고 옷위로 내꺼 만져서 튀었음 ㅜㅜ 그냥 재미로 만나본거
-
한 몇 년전까지만 해도 선생님들이 학생 엄청 쥐어팼었다는데
-
사탐 과목 추천 3
최저용으로 사탐 과목 추천좀요 고1 때 통합사회 했었는데 윤리 진짜 개싫어요 일단...
-
국영탐 개념부터 다시할려고 하니까 들어야되는 강의 수가 너무 많은데 몇시간 정도 듣는게 적당함?
-
김동욱 12
-
보니까 1등이랑 꼴등 점수차가 클수록 치명타라는데 그럼 펑크면 내신 cc는 오히려...
-
한국사최저떨로 반을 떨궈먹었는데 기출공부하다가 잘풀리면 정신병걸릴듯 올해쓴 논술이...
-
점심 먹는다 2
오후 2시에 일어났으니 아무튼 점심임 ㅋㅋ
-
통학수능 이래로 가장 어려운 20번이 뭐라고 생각함? 33
방금 2209 20번 풀어봤는데 이것도 쉽지많은 않았어서 갑자기 생각남
-
슈냥이랑 만나서 밥 한 끼 하면서 갤주 인수인계 받고 오셈뇨
-
연대야 조발해라 1
불합격 글자를 봐야 공부를 더 열심히 할 거 같다 마음이 싱숭생숭해
-
첫 글...
-
사실 지금까지는 그냥 수시 6장 그냥 버리는게 아까워서 써 왔는데다 떨이다보니 흠…...
-
수학2 자작문제 12
옛날 가형 21번 변형인데 언제인지는 기억 안남
-
[음악 차트] 2024년 한국 연간 차트 결산 TOP30 3
2021년 상반기 결산 韓日 음악 차트 TOP10:...
-
파일 업로드 무제한 봇 존재(디코처럼 다운 봇 유튜브 영상 다운 봇 음악봇 다...
-
강민철 김상훈 0
기출 풀면서 쉬운지문은 혼자 해설보면서하고 어려운지문만 강의볼건데 강기분or유네스코...
-
수능은 2등급 나옴.. 이번 실모들 진짜 너무 어렵지 않았냐..
-
파닭먹고싶네 6
내일 먹어야지
-
논술할까 말까 2
25수능 언미물지 백분위 82 97 94 88 인고 영어는 2입니다 재수는 확정이고...
-
ㅈㄱㄴ
-
뿌링클 왜 좋아해? 11
난 뿌링클 좋아하는게 이해가 안되는데 어떤맛에 끌리는거야?시비걸려는건 아니고 진짜 순수 궁금증임
-
2차로옴 심지어... 이러다 진짜 뒤지는거 아닌가 모르겠네
-
역함수로 현장에서 푼 사람 있음?
-
지지리도 운 없이 이미 컴공에 원서 지른 분을 위한 조언 10
1. 전자공 복전/반도체 트랙을 잘 알아보자 + 임베디드도 한 번 생각해보자 -...
-
ㄱㄱㄱ
-
맞팔로우 하실분 4
-
선넘질받 16
(댓글0개) 답장은 랜덤
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요