下列哪个选项是程序的输出:
#include <iostream>
#include <string>
using namespace std;
class A{
mutable int a;
public:
A(){
cout << "A's Constructor called \n";
}
~A(){
cout << "A's Destructor called \n";
}
};
class B{
A a;
public:
B(){
cout << "B's Constructor called \n";
}
~B(){
cout << "B's Destructor called \n";
}
};
int main(int argc, char const *argv[]){
B b1;
}
A.
A's Constructor called
B's Constructor called
B.
A's Destructor called
B's Destructor called
C.
A's Constructor called
B's Constructor called
B's Destructor called
A's Destructor called
D.
A's Constructor called
B's Constructor called
A's Destructor called
B's Destructor called
解答:
当创建类B的对象b1时,首先会调用其成员变量a(属于类A)的构造函数,然后调用类B的构造函数。当对象b1的生命周期结束时(在main函数结束时),首先调用B的析构函数,然后调用A的析构函数。这是因为析构函数的调用顺序与构造函数的调用顺序相反。
因此,程序的输出将是:
C. A's Constructor called
B's Constructor called
B's Destructor called
A's Destructor called