在这里,我们将了解如果析构函数在C ++中是私有的,将是什么情况。让我们看一些示例代码来了解这个想法。
该代码具有私有析构函数,但由于未创建任何对象,因此不会产生任何错误。
#include <iostream>
using namespace std;
class my_class {
private:
~my_class(){
//私有析构函数
}
};
int main() {
}在此程序中,当我们尝试创建一个对象时,这将产生编译错误,但是编译器会注意到析构函数不可访问。因此,它不能在完成任务后销毁。
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//私有析构函数
}
};
int main() {
my_class obj;
}输出结果
[Error] 'my_class::~my_class()' is private
现在,如果我们为该类创建一个指针,则不会生成错误,因为不会创建任何实际对象。
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//私有析构函数
}
};
int main() {
my_class *obj;
}如果使用new运算符创建了一个对象,则也不会产生错误。编译器认为这是程序员从内存中删除对象的责任。
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//私有析构函数
}
};
int main() {
my_class *obj = new my_class;
}输出结果
现在,如果我们添加delete语句删除对象,它将为私有析构函数生成错误。
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//私有析构函数
}
};
int main() {
my_class *obj = new my_class;
delete obj;
}输出结果
[Error] 'my_class::~my_class()' is private