【发布时间】:2016-04-28 00:18:00
【问题描述】:
这是我的代码
在 Burrito.cpp 文件中
#include "Burrito.h"
#include <iostream>
using namespace std;
Burrito::Burrito(){}
void Burrito::printCrap(){cout<< "something"<<endl;}
void Burrito::constante() const{cout<<"this aint gonna change"<<endl;}
Burrito::~Burrito(){cout<<"deconstructed"<<endl;}
在 Burrito.h 文件中
#ifndef BURRITO_H
#define BURRITO_H
class Burrito
{public:
Burrito();
void printCrap();
void constante() const;
~Burrito();};
#endif // BURRITO_H
在主文件main.cpp中
#include <iostream>
#include "Burrito.h"
using namespace std;
int main()
{
Burrito so;
Burrito *sagar = &so;
so.printCrap();
sagar->printCrap();
const Burrito constObject;
constObject.constante();
return 0;
}
我是初学者,这是我的问题。我试图了解析构函数,这段代码运行良好,只是它运行了析构函数 2 次,所以这个程序的结果是这样的:
something
something
this aint gonna change
deconstructed
deconstructed
为什么会出现两次“解构”?
【问题讨论】:
-
因为您构造了两个
Burrito对象。您会期望多于还是少于 2 个析构函数调用? -
您已经定义了两个 Burrito 实例 - so 和 constObject;因此,每个实例都会调用一次析构函数(注意:析构函数,而不是“解构函数”)。祝你好运
标签: c++ class destructor