我是C++的新手.我在下面编写了代码,用于理解构造函数和析构函数在C++中的工作原理.
#include<iostream>
using namespace std;
class Line
{
private:
Line();
public:
int length;
static void getInstance(Line* objLine);
~Line();
};
void Line::getInstance(Line* objLine)
{
if(objLine == NULL)
{
objLine = new Line();
}
}
Line::Line()
{
cout<<"In the Constructor"<<endl;
}
Line::~Line()
{
cout<<"In the Destructor"<<endl;
}
int main()
{
Line* objLine = NULL;
Line::getInstance(objLine);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我已经读过,当对象超出范围时,会调用类的析构函数.在上面的代码中,对象由objLine处理,objLine是一个局部变量.因此,在主要结束时,我预计会调用析构函数.但它永远不会被调用.在上面的例子中调用析构函数时请告诉我
在C++中,当变量超出范围时,或者delete在使用创建的对象上调用析构函数时,将调用析构函数new.
您new用来创建一个对象,但从不使用delete,因此永远不会调用析构函数.
如果你的代码是这样的:
int main() {
Line objLine;
}
Run Code Online (Sandbox Code Playgroud)
析构函数被调用.