C++ 中的私有析构函数
下面将探讨 C++ 中析构函数为私有时的具体情况。我们来看一些示例代码来了解基本原理。
此代码具有私有析构函数,但不会生成任何错误,因为没有创建对象。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class(){
//private destructor
}
};
int main() {
}由于试图创建一个对象,但编译器会发现无法访问析构函数,因此在该程序中,这将导致编译错误。因此,它无法在完成任务后被销毁。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class obj;
}输出
[Error] 'my_class::~my_class()' is private
现在,如果我们为该类创建一个指针,则不会产生错误,因为没有创建实际对象。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class *obj;
}如果使用 new 运算符创建一个对象,则也不会产生任何错误。编译器认为由程序员负责从内存中删除对象。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class *obj = new my_class;
}输出
现在,如果我们添加 delete 语句来删除对象,则它将为私有析构函数生成错误。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class *obj = new my_class;
delete obj;
}输出
[Error] 'my_class::~my_class()' is private
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP