9
ハーブ・サッターのブログでthis articleを読んだ後、私はちょっと実験して、困惑するものに遭遇しました。私はVisual C++ 2005を使用していますが、これが実装に依存する場合は驚くでしょう。ここで一時的な参照の参照
が私のコードです:
#include <iostream>
using namespace std;
struct Base {
//Base() {}
~Base() { cout << "~Base()" << endl; }
};
int main()
{
const Base & f = Base();
}
実行すると、それは「~Base()
」二回を表示します...しかし、私のコンストラクタをアンコメントしている場合、それだけで一度それを表示します!
誰でも説明がありますか?
すばらしい答え、ありがとうございましたサー: – Drealmer
面白いです。この結果、場合によってはオブジェクトがスライスされますか? –
"C++ 1xで修正されます。"ああああ、彼らは今、次の標準と呼んでいるのでしょうか、これは気の利いた冗談ですか? – veefu