什么时候在C++中调用类的析构函数?

Dur*_*esh -5 c++ c++11

我是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是一个局部变量.因此,在主要结束时,我预计会调用析构函数.但它永远不会被调用.在上面的例子中调用析构函数时请告诉我

Bar*_*chs 8

在C++中,当变量超出范围时,或者delete在使用创建的对象上调用析构函数时,将调用析构函数new.

new用来创建一个对象,但从不使用delete,因此永远不会调用析构函数.

如果你的代码是这样的:

int main() {
   Line objLine;
}
Run Code Online (Sandbox Code Playgroud)

析构函数被调用.