析构函数的调用与return语句

Posted lsh99k

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了析构函数的调用与return语句相关的知识,希望对你有一定的参考价值。

老师在课堂上讲到了return语句在执行时会自动调用对象的析构函数。我编写了下述代码测试发现整个程序析构函数调用次数与构造函数不等,这样难道不会产生内存泄漏吗?

源代码如下:

#include <iostream>
using namespace std;

class A {
public:
    A(int i = 1) :x(i){ cout << "constructed." << endl; }
    ~A() { cout << "destructed." << endl; }
    int get_x() { return x; }
private:
    int x;
};

int aqr_it(A a) {
    A b=a;
    return (b.get_x())*(b.get_x());
}

int main() {
    A a;
    cout << a.get_x() << endl;
    cout << aqr_it(a) << endl;
    return 0;
}

程序运行结果:

技术分享图片

暂时不知道如何解释该现象。























以上是关于析构函数的调用与return语句的主要内容,如果未能解决你的问题,请参考以下文章

c++ 析构函数 是在啥时候执行

面向对象(构造及析构函数)

虚析构函数与纯虚函数

析构函数调用

直接调用(虚拟)析构函数是不是有效?

mfc 类的析构函数