関数の戻り値とコンストラクタについて質問です。
以下のようなコードを実行したところ
class A
{
int m_n;
public:
A::A(int n) :m_n(n){ cout << "コンストラクタ" << endl; }
A::A(const A& a):m_n(a.m_n){ cout << "コピーコンストラクタ" << endl; }
A::~A() { cout << "デストラクタ"<< endl; }
};
A func()
{
return A(10);
}
int main()
{
A a(func());
return 0;
}
Borland C++ では
コンストラクタ
コピーコンストラクタ
デストラクタ
デストラクタ

Visual C++ 6.0では
コンストラクタ
デストラクタ
となりました。なぜ、違った結果になるのかわかりません。
どちらも最適化はOFFにしてあります。どなたか助けてください。