C++ 中的析构函数
析构函数是 C++ 中类的函数,用于删除类对象。
调用析构函数
当类对象在程序中超出作用域时,会调用析构函数。对象超出作用域的情况包括:
程序超出函数的作用域。
程序结束。
初始化对象局部变量的代码块超出作用域。
当对象的运算符被删除时。
示例
让我们看一段代码并猜测程序的输出:
#include <iostream>
using namespace std;
int i;
class destructor {
public:
~destructor(){
i=10;
}
};
int valueInitializer() {
i=3;
destructor d1;
return i;
}
int main() {
cout<"i = "<<valueInitializer()<<endl;
return 0;
}输出
i = 3
让我们先了解一下代码,这里我们创建了一个全局变量 I,然后在值初始化函数中我们改变了它的值。在这里,我们将其初始化为值 3,然后创建对象 d1,最后返回该值。
猜猜输出是什么?
是 3,如果你猜对了,恭喜你!如果你认为是 10,也不要担心。现在,看看这里发生了什么:
如上所述,当调用函数超出作用域时,会调用析构函数。在超出作用域之前,函数已将值 3 返回。
示例
再试一次,现在猜猜这段代码的输出:
#include <iostream>
using namespace std;
int i;
class destructor {
public:
~destructor(){
i=10;
}
};
int& valueInitializer() {
i=3;
destructor d1;
return i;
}
int main() {
cout<<"i = "<<valueInitializer()<<endl;
return 0;
}输出
这段代码看起来很相似,但它
输出:i = 10。
为什么?
在这里,我们返回了变量的引用而不是值。因此,当调用析构函数时,它会将值更改为 10,并且由于传递了引用,因此打印 10。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP