컴공 일기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
하나 둘 셋...열...스물...백...ㅅㅂ어디까지 가
-
아니 해설지로는 도저히 못풀겠더라 존나 복잡함
-
흐흐
-
스블 vs 뉴런 0
n수이고 작수 1이긴한데 안정적이지 않고 등급대가 진동해서 뉴런이나 스블 둘 중...
-
다들 N수 왜하나요 104
궁금 객기?열등감?
-
이지랄하는데 맞는데 어떡함 달리 업적이 없는디;
-
이거 어렵나용?ㅠㅠ
-
메인 가고싶으셔서 구걸을 하신건 맞다고 합니다 아마 제가 이렇게 한번더 물고...
-
하 시발!
-
국어 공부 일주일 중 이틀만 오후로 땡겨도 상관없죠? 1
나머지날은 다 오전에 함
-
과외생 주려고 만든 건데... 풀어보면 좋을 것 같아서 올립니다. 난이도는 매우...
-
일단 내 상황 설명 작년에 악깡버하다가 망한 경험이있기에 고민중임 작년 5등급에서...
-
작년 이맘때 있었던 15
여러 사람들이 기억나네요..
-
빅포 하고 이해원하면되나요?
-
귀여운 보르그나 봐라
-
재수생의 힘 4
역함수 미적분 숙제문항 전 문항 강기원과 풀이 100% 일치
-
[단독] 고려대 의대서 “미복귀 인증해달라” 압박 정황…수업 복귀 우회적 방해 5
지난 21일 의대 등록 마감시한을 앞두고 고려대 의대생들 사이에서 단체 대화방 내...
-
슬퍼집니다 걍 서성한이나 갔으면 이상한거로 귀찮아지진 않을텐데
-
근데 어디껀지 모르겠음
-
심심함뇨
-
저격전이야? 10
-
예엣날 가형 시절에 했던 거라 지금은 노베나 마찬가지인데 요즘 기하메타가 많이...
-
진짜 뭐 옷 몇 개만 사도 몇십만원 훌쩍이라네요
-
이사람은 그냥 수학 그 자체임
-
10 이하의 조회수와 0개의 댓글
-
저거 식 잘못쓰신것같음
-
기하랑 미적 개념 둘다 쓸 수 있음
-
그럼에도 불구하고 항상 애 낳으면 좋을 것 같다는 생각을 합니다 물론 힘들겠지만...
-
집요하다
-
개념 리밋말고 딴거 들었는데 임팩트 좀 강의만 들어보니깐 정리용으로 딱이던데 해도...
-
싸우면 아파요 여러분 22
-
저격메타 예상 2
저격합니다 저 격합니다(대충 애니짤) 이드립 무조건 올라옴
-
갤 다망했노 1
ㅇㅇ
-
참고로 21세 전지현 빈말은 아닌 것 같네요.
-
이게 싸울일인가 싶은데 제가 이상한건가여....
-
저격합니다 0
넵
-
나도 저격해봐 1
무빙이 페이커급이라 다 피해버렸잖아
-
요즘 왤케 기하 언급이 많아지는거야??!
-
이감 vs 상상 2
이감 모고 4회 + 간쓸개 4권 상상 모고 4회 + 이매진 1권 하나만 추천부탁드려요
-
하지만 그대 숨결 느낄 수 없고
-
나타나주세요!
-
이번 옯생을 시작한 후에 저격먹은적이 없어
-
키작고귀엽고하얗고슬랜더인 사람이랑 연애하고 싶다
-
https://cafe.naver.com/needlestudy/109792?tc=sh...
-
현우진체있으신분...? 댓글이나쪽지주시면감사하겠습니다
-
크아악

아직도 계셨군요ㄷㄷ드문드문 들어오고 있습니다.

코딩에 대한 열정 대단하십니다초보라서 갈 길이 먼 것 같습니다.. 감사합니다..
아직 계시네요 ㄷㄷㄷ 전역 얼마나 남으셨나요