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입니다.
댓글 달기