복사 생성자 질문 드립니다.
21분37초의 코드와 결과를 보면 testFunc(10)에서 반환한 인스턴스가 블록을 벗어남과 동시에 소멸을 하게 되어서 ~TestData(10)이 먼저 나와야 할 것 같은데 결과는 ~TestData(100)이 먼저 프린트 되고 있습니다. 강의 중간 부분까지는 강사님이 "객체는 블록을 벗어나면서 소멸되고, 복사 생성자가 호출이 되어서..." 이런 방법으로 설명해주시다가 21분 37초의 코드는 결과만 보여주고 넘어가셔서. 정확히 어떤것 때문에 저런 결과가 나왔는지 궁금합니다!
回答 1
0
testFunc(10).setData(100);
상기 코드에서 두 번째 줄 코드가 수행되는 시점에 생성된 임시 객체는 해당 구문이 끝나는 즉시 소멸합니다. 그리고 testFunc() 함수의 매개변수가 const TestData& 이므로 int 데이터 10을 매개변수로 임시 객체가 main() 쪽에서 생성됩니다. 결국 두 임시 객체 모두 해당 구문이 끝나면 소멸하는 것으로 봐야 하겠습니다.
다만 여기서 질문하신 순서 문제는 역순으로 이해하시면 되겠습니다. 결과적으로 어떤 것이 먼저 소멸하든 상관이 없겠으나 메모리를 Stack 구조로 관리하는 것이 일반적이므로 역순이 된다 생각하셔도 좋겠습니다. 참고하시기 바랍니다. 😄
인터페이스 상속과 추상 자료형 2:00 질문
0
50
1
13분 42초의 예제
0
52
2
네임스페이스 스코프 내에서 정의된 변수, 함수들이 위치하는 곳 질문
0
47
1
소멸자 가상함수 질문
0
55
2
이동생성자의 매개변수로 넘어가는 임시객체의 값 유지 관련하여 질문이 있습니다.
0
63
2
임시 객체 복사 생성자 질문드립니다
0
66
2
변수 바인딩에 대한 의문점
0
113
1
C++ 파일 구조 질문
0
128
1
빈 포인터에 멤버함수 호출
0
104
1
파생클래스에서 virtual함수를 선언에 대한 질문입니다.
0
116
2
순수 가상 클래스 선언과 일반 인트 변수의 선언과 다른가요?
0
137
2
안녕하세요. 이동의미론에 대해 제가 잘 이해했는지 궁금합니다.
0
132
1
인스턴스의 개념에 대해 int a(3), int(5) 예시를 바탕으로한 질문입니다.
0
189
2
식별자 검색 순서 관련 namespace 생략 관련 오류에 관한 질문
0
175
1
마지막 주소록 예제 c 파일 한글 깨짐 현상
0
190
1
nullprt vs null
0
153
2
쓸데없지만 질문드리고싶습니다
0
181
1
생성자 궁금한거 있습니다
0
218
2
단순대입 오류 발생 이유
0
235
1
네가지 형변환 강의 질문
0
283
1
CMyString Step10 강의 질문
0
174
1
임시 객체와 보이지 않는 복사 생성 강의 질문
0
268
2
섹션8 3번째 강의 (실습 프로젝트 - 문자열 필터개선) 질문
0
219
2
차이점을 잘 모르겠습니다.
0
233
1

