考虑这个例子:
#include <iostream>
using namespace std;
class MyClass
{
public:
~MyClass() { cout << "DTOR OK !" << endl; }
};
int main(void)
{
MyClass test();
MyClass* pTest = new MyClass();
delete pTest;
}
为什么“DTOR OK!”没有被打印两次?为什么本地对象“test”的析构函数没有被调用?
当析构函数是私有的时候,我注意到delete pTest;只会导致编译错误,而不是对于本地对象。这里发生了什么?