は次のように行ってきました:デストラクタはなぜここで一度しか呼び出されないのですか?私はupcomming試験や質問のいずれかの古い試験問題を見てい
//How many times is Foo's destructor called when func() is called?
void func(){
Foo a;
for (int i = 0; i < 10; i++){
Foo *c = new Foo();
a = *c;
}
}
、正しい答えは、誰もがそれがために一度呼び出されていませんどのように私に説明することができます。1.ましたそれぞれの新しいFooはfor-loopで作成されましたか?
「新しいもの」の読み上げ時期。 – juanchopanza
ヒープ上にオブジェクトを割り当てると(つまり、 'new'キーワードを介して)、デストラクタを明示的に呼び出す必要があります。デストラクタへの唯一の暗黙の呼び出しは、 'a'が有効範囲外になるとき、すなわち' func() 'が終了するときです。 – freakish