首先我们来看一下下面这个程序的输出:
#include <iostream>
using namespace std;
class Test {
private:
~Test() {}
};
int main()
{
}
上面的程序可以编译并正常运行。因此,我们可以说:不是创建私有析构函数编译器错误。
现在,您对下面的程序怎么说?
#include <iostream>
using namespace std;
class Test {
private:
~Test() {}
};
int main()
{
Test t;
}
上面的程序编译失败。编译器注意到,因为析构函数是私有的,所以无法破坏局部变量“ t”。
现在,下面的程序呢?
#include <iostream>
using namespace std;
class Test {
private:
~Test() {}
};
int main()
{
Test* t;
}
上面的程序工作正常。没有正在构造的对象,程序仅创建“ Test *”类型的指针,因此不会破坏任何内容。
接下来,下面的程序呢?
#include <iostream>
using namespace std;
class Test {
private:
~Test() {}