私は次のコードを持っている:私はそれを実行するとC++のコンストラクタ/デストラクタ
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"cons"<<endl;
}
~A()
{
cout<<"dest"<<endl;
}
};
A
gokul (void)
{
A p;
return p;
}
int
main()
{
A a = gokul();
cout<<"done\n";
}
を。
短所私は出力があることを期待していた
destの
行わ
:私は次の出力を取得 - > P作成し、
両論
短所を - - >ゴールを返すために
dest - > p destroとき、関数gokul戻り、新しい変数>破壊され、メインはローカル変数として
を返さ「p」が「」になり破壊される - YED、gokulは
DESTを行って
を返さ作成された、いいえ?私はすべての3つのスタンダード03、11 & 14でコンパイルしましたが、同じ結果が得られます。 〜
http://en.cppreference。com/w/cpp/language/copy_elision – jtbandes
コピーコンストラクタをトレースしませんでした。オブジェクトはデフォルトで構築されるだけでなく、コピー構築されます。 – PaulMcKenzie
@PaulMcKenzieコピーコンストラクタに "copy"を追加しても出力は変更されません。 – xinaiz