質問
読んだ後は、ハーブサッター氏のブログでこの記事には、私は少し実験して、私を困惑何かに走りました。私は、Visual C ++ 2005を使用していますが、これは、実装依存していた場合、私は驚くだろう。
ここに私のコードは次のとおりです。
#include <iostream>
using namespace std;
struct Base {
//Base() {}
~Base() { cout << "~Base()" << endl; }
};
int main()
{
const Base & f = Base();
}
ときに実行が、それは "~Base()
" を表示するのを2回の...しかし、私のコンストラクタをアンコメントしている場合、それはそれだけの一度の!
誰もこれについての説明を持っていますか?
解決
のこれは、実装依存である。の
標準は、const参照に一時的に結合する際のコピーが発生することができます。あなたのケースでは、VC ++はコンストラクタが暗黙的に定義されたコピーのみを行います。これは予想外ですが、許可されています。
C ++ 1xのこのに修正します。
所属していません StackOverflow