デストラクタが保護されている場合、スタック上のオブジェクトの割り当てはできませんが、ヒープ上での割り当ては許可されていますか?ヒープとデスティネーション間のオブジェクトデスティネーションの割り当て
class Foo
{
public:
Foo()
{
}
protected:
~Foo()
{
}
};
int main()
{
Foo* objOnHeap = new Foo(); // compiles fine
Foo objOnStack; // complains that the destructor is protected
return 0;
}
あなたは 'delete'によってそれを破壊していないので、dtorはまったく呼び出されません。 – songyuanyao
ヒープ上のオブジェクトに対して 'delete'を呼び出さなかった。スタック上のオブジェクトの場合、スコープから外れると削除されます。 – arunmoezhi
はいこれは違いです。 dtorが呼び出されるかどうか。 (暗黙的にまたは明示的には関係ありません) – songyuanyao