把析构函数定义为私有成员可以保证只能在堆上new一个新的类对象.
下面写一个简单的例子验证一下:
写一个简单的类,把它的析构函数变成私有的.
new一个新的类对象,编译通过,如下图.
把原来的代码改动一下,直接在栈上创建对象.
如下图所示,编译不通过.
在栈上生成对象时,对象会自动析构,也就说析构函数必须可以访问。所以如果析构函数私有,则会报错.
把析构函数定义为私有成员可以保证只能在堆上new一个新的类对象.
下面写一个简单的例子验证一下:
写一个简单的类,把它的析构函数变成私有的.
new一个新的类对象,编译通过,如下图.
把原来的代码改动一下,直接在栈上创建对象.
如下图所示,编译不通过.
在栈上生成对象时,对象会自动析构,也就说析构函数必须可以访问。所以如果析构函数私有,则会报错.