작성
·
7
·
수정됨
0
안녕하세요.
이동시멘틱 강의를 보다가 의문이 있어 문의드립니다.
강의에 나오는 CMyString 클래스는 내부 포인터 변수 멤버를 가지고 있는데, CMyString a,b,c;에서 a = b+c;를 실행할 때
CMyString operator+() 함수의 return값의 사본이 임시객체에 저장되고 이 임시객체가 이동생성자의 매개변수에 들어가는 것이 맞을까요?
만약 그렇다면 사본을 가진 임시객체의 포인터 변수 멤버의 값이 return 값의 포인터 변수 멤버의 값과 같을텐데 return 후 return값이 소멸함에도 이동생성자 내부에서 사본은 어떻게 계속 값을 유지하는걸까요?
이동생성자 호출 시에는 이동생성자 종료 전까지 return 값이 사라지지 않는걸까요?
사본이라고 표현하신 것의 의미도 궁금합니다...
사본은 모든게 다 똑같은 복사본인걸까요..?
근데 그러면 참조자와 같은것일것같은데 반환형식이 참조자는 아니고... shallow copy한 것도 아니고 deep copy한 것도 아닌것 같은데...
너무 헷갈리네요...
감사합니다.
답변