C++ 복사 생성자에 대해서 질문드립니다.
글쓴이: thslrtoo / 작성시간: 화, 2013/09/24 - 7:13오후
#include <iostream> using namespace std; class MyClass { public: int a; public: void Test() { cout << a << endl; } public: MyClass(void) { a = 10; cout << "생성자" << endl; } ~MyClass(void) { cout << "소멸자" << endl; } MyClass(const MyClass& temp) { a = temp.a; cout << "복사생성자" << endl; } MyClass & operator = (const MyClass& temp) { a = temp.a; cout << "대입연산자" << endl; return *this; } }; MyClass Create() { MyClass temp; return temp; } int main(void) { MyClass a(Create()); a.a = 15; a.Test(); return 0; }
위와 같은 코드가 있다고 가정할때, 출력 결과로는
==== output =====
생성자
복사생성자
소멸자
복사생성자
소멸자
15
소멸자
이렇게 예상을 했는데요.
실행해보니 아래와 같이 나왔습니다.
==== output ====
생성자
15
소멸자
혹시나 하여 VS2008 에서도 컴파일 해봤는데 이번에는 아래와 같이 나오네요.
==== output ====
생성자
복사생성자
소멸자
15
소멸자
결과가 왜 이렇게 출력되는건가요??
제가 예상한 결과로는 VS2008 로 컴파일한게 가장 근접하긴 한데,
여기서는 왜 복사생성자와 소멸자가 하나 덜 나왔을까요??
고수님들 답변 부탁드립니다.ㅜ.ㅜ
Forums:
RVO입니다.
RVO입니다.
댓글 달기