C++中关于类的析构函数无法调用的问题
代码如下:
#include <iostream>
using namespace std;
class A {//创建一个A类
public:
A(int a) {
cout << "A()..." << endl;
m_a = a;
}
void printA() {
cout << "m_a=" << m_a << endl;
}
~A() {//创建A的析构函数
cout << "~A..." << endl;
}
private:
int m_a;
};
class B {//创建一个B类
public:
B(A&a1,A&a2,int id) :a1(a1), a2(a2) {
cout << "B()...." << endl;
m_id = id;
}
void printB() {
cout << "id=" << m_id << endl;
a1.printA();
a2.printA();
}
~B() {//创建B类的析构函数
cout << "~b...." << endl;
}
private:
int m_id;
A a1;
A a2;
};
int main() {
A a1(10), a2(100);
B b(a1, a2, 1000);
b.printB();
system("pause");//暂停程序
return 0;
}
我们知道析构函数在类结束时会自动调用,但当我们用system(“pause”)暂停程序时,析构函数还没有执行会被暂停,要想析构函数被调用应该去掉system(“pause”).