質問

読んだ後は、ハーブサッター氏のブログでこの記事には、私は少し実験して、私を困惑何かに走りました。私は、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のこのに修正します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top