Herb Sutter のブログでこの記事を読んだ後、少し実験してみたところ、私を困惑させる何かに出くわしました。私は Visual C++ 2005 を使用していますが、これが実装に依存しているとしたら驚きです。
これが私のコードです:
#include <iostream>
using namespace std;
struct Base {
//Base() {}
~Base() { cout << "~Base()" << endl; }
};
int main()
{
const Base & f = Base();
}
実行すると、「~Base()
」が2回表示されます...しかし、コンストラクターのコメントを外すと、1回だけ表示されます!
誰もこれについて説明がありますか?