面试题答案
一键面试- 调用顺序:
- 当创建类A的对象时:
- 首先调用类B的构造函数,因为类A中有类B的对象作为成员变量,会先初始化成员变量。
- 然后调用类A的构造函数。
- 当销毁类A的对象时:
- 首先调用类A的析构函数。
- 然后调用类B的析构函数。
- 当创建类A的对象时:
- 代码示例:
#include <iostream>
class B {
public:
B() {
std::cout << "B的构造函数被调用" << std::endl;
}
~B() {
std::cout << "B的析构函数被调用" << std::endl;
}
};
class A {
public:
A() {
std::cout << "A的构造函数被调用" << std::endl;
}
~A() {
std::cout << "A的析构函数被调用" << std::endl;
}
private:
B b;
};
int main() {
A a;
return 0;
}
在上述代码中,当创建A
类对象a
时,会先输出“B的构造函数被调用”,再输出“A的构造函数被调用”。当程序结束,a
对象被销毁时,会先输出“A的析构函数被调用”,再输出“B的析构函数被调用”。