在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。