컴공 일기257
게시글 주소: https://o.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를 선물하세요.
-
대전 인문논술 0
재수생이고 논술 준비를 좀 해야할 거 같은데 추천해주실만한 학원 있으신가요 ㅜㅜ
-
공부 할 건 해야지,, 개인적으로 이 문제 어렵다고 생각함
-
[속보 ]2025경기대 수리논술 신설 자율전공학부로 신설됨 ! 수리논술2문항...
-
문과인데 등급때문에 미적분을 선택해서 확통을 안배웠단말이에요? 근데 제가 원하는...
-
1.메디컬 상위 연세 치의 2.메디컬 중위 3.연세 일반 메디컬 하위 4.한양 고려...
-
나도 질 수 없다 14
역대급 인생샷 개잘나옴
-
먹지마라 를 실천하질 못하네 야밤에 야무지게 신라면 투움바 만들어먹었더니 속 개아픈데ㅋㅅㅋㄱㅋ ㅠ
-
야식 개땡기는데 6
먹으면 내 살과 위장이 소리치겠지
-
나도 해줘요 8
맞팔..????
-
이 시간에 들어오니 뭐가 많네..? 뭐지...?
-
연논 냥논 비교 3
수리논술로 봤을때 연논이 냥논보다 붙기 힘든가요? 연논 수능전이라 괴수들은 잘...
-
논술 추천 13
고3이고 정시 올3정도 나온다고하면 논술 어디어디 쓰는게 베스트인가요 목표는...
-
경한 최저 맞출 정도로 잘하는 문과가 논술을 열심히 준비할것 같진 않은데 3합4...
-
[인문논술] 이번 여름방학, 197:1을 뚫은 합격 노하우를 전수합니다. 0
안녕하세요? 저는 24학년도 한양대학교 국어국문학과를 논술전형으로 최초합하여 현재...
-
6모 개쳐박고 질질짜다가 자존심 회복했다..
-
ㅠㅠ 과외는 1:1 비대면 학원은 목동
-
장담컨데 이 글로 수리논술 해석학 문제 80%는 정복할 수 있습니다 4
안녕하세요, TEAM 수리남입니다! 오랜만에 인사드리네요ㅎㅎ TEAM 수리남 약력...
-
아시거나 수강중이신 분 있나요? 고2부터 차근차근 논술 준비하면 좋다고 하시길래...
-
학원이랑 과외 중에 하나 선택할 건데 조언 좀 주실 수 있나 해서요 ㅠ.ㅠ 둘 다 상담은 받았어요
-
추천해 주실 수 있나요? 직접 다 찾아가 보려고 하는데 진짜 정보가 하나도 없어서…
-
생2 c가 떴는데 논술이나 정시전형에서 많이 감점되나요? 크게 의미 있을정도로 감점되나요?
-
궁금해서
-
보통 논술 공부는 언제부터 시작하나요??
-
수리 논술 준비히려 하는데 수1, 수2, 미적, 기하, 확통 다 준비해야 하는...
-
성대 경희대 <=무조건 씀 한양 외대 <= 쓸 가능성이 높음
-
어떻게 논술공부를 시작해야할진 모르겠지만 조금 연습해보다 도전할 수 있는 실력이...
-
성균관대학교 논술 합격수기 - 성균관대학교 인문과학계열 최초합격, 수원 논술학원 2
1. 입시결과 요약(합격 또는 불합격한 대학명/ 학과 / 전형) 성균관대학교 /...
-
교무실오면 나눠준다는데 가서 받을까요? 쌤이 논술할거냐 물어볼 것 같은데.. 그냥...
-
수리논술 준비중이고 성균관대와 그급 학교로 6논술 준비 중인데 대치동 로고스와...
-
인문논술 개쌉노베라 지금부터 일주일에 3-4시간 씩은 투자하고 싶은데 1달 정도는...
-
그냥 대학별로 글쓰기 연습하고 모범답안 보면서 수정하는식으로?..
-
다음주부터 입반하게 될것 같은데 한 반에 인원이 몇명정도 되나요? 그리고 다른...
-
정시는 가나다군에 각각 1회씩만 지원가능하다는데 이거 다 지원해서 더이상 정시...
-
모여진 표같은거 없나요 열심히 찾아봤는데 안나오네요..ㅜㅜ
-
ㅇㅇ? 50떴는데 문제가 딱히 좋은 문제 같아보이진 않아서 긴가민가함
-
수학 3년째 3,2왔다갔다 한다. 2등급 안정 되려면 뭘 해야될까. 개때잡 거의다...
-
경희대 논술의 입시결과를 통해 논술전형의 현실을 엿보다 논술의 경쟁률은 늘...
-
여름방학동안 대치동이든 어디든 논술학원에서 메디컬 논술 관련해서 수업을 들어보고...
-
유튭에서 봤는데 마인드가 대단하신듯.. 자기가 밤새서 만든 저작물이 pdf돌면...
-
내신 ㅈ망해서 어차피 원하는 대학 못가는데 여기서 남은 선택지는 일반적으로...
-
N수생 ㅈㄴ 많음->최저따기 힘듦->고대 최저 개높음->수논이니까 수학만 잘하는...
-
수리논술 독학책 좀 추천해주세요 나이로 4수 입니다 1
2년전에 재수 끝내고 더 이상 입시판에 안 들어올거라 생각했는데 공군에 있으면서...
-
안녕하세요, 의대 수리논술 전문 유튜브 채널 '수학GPT'에서 2024학년도 의대...
-
현역때 수리논술로 연대갔었고 수능수학도 꽤 자신있습니다 올해 메디컬생각으로...
-
제가 이번에 쓸 수 있는 카드는 전부 써볼려고 합니다. 그래서 수리논술을 생각해...
-
안녕하세요, TEAM 수리남입니다. (저희의 약력이 궁금하시다면 아래 링크를...
-
생윤 사문 개념떼고있는데개념 1바퀴 빠르게 일단 다돌리고 2회독vs단원 끝날때마다...
-
어느대학 쓰실건가요!
-
학원은 안 다닐것같고 수시카드 버리기 아까워서 인논쓸것같은데 언제부터 독학으로...
드문드문 들어오고 있습니다.
초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요