析构函数是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。