この例を考えてみましょう:デストラクタは、オブジェクトの後に呼び出されていないスコープの外に出る
#include <iostream>
using namespace std;
class MyClass
{
public:
~MyClass() { cout << "DTOR OK !" << endl; }
};
int main(void)
{
MyClass test();
MyClass* pTest = new MyClass();
delete pTest;
}
なぜ「デストラクタOK!」 2回印刷されませんか?なぜローカルオブジェクト "test"のデストラクタが呼び出されないのですか?
デストラクタをプライベートにすると、delete pTestのコンパイルエラーしかないことに気付きました。ローカルオブジェクトに対しては有効ではありませんか?ここで何が起こっていますか?
OK。だからそれはほとんどだ。私が愚かな狩りをするときに、それがほとんどの人であるか非人である人であるかを覚えていない。 – user4581301
コンストラクタも呼び出されないので、これは問題ありません。 – AnT