C++ 继承:基类和派生类构造函数和析构函数的调用顺序
以下是简单的cpp代码实现:
#include <iostream>
class Base {
private:
int x;
public:
Base(int _x): x(_x) {
std::cout << 'Base constructor called' << std::endl;
}
~Base() {
std::cout << 'Base destructor called' << std::endl;
}
};
class Derived : public Base {
private:
int y;
public:
Derived(int _x, int _y): Base(_x), y(_y) {
std::cout << 'Derived constructor called' << std::endl;
}
~Derived() {
std::cout << 'Derived destructor called' << std::endl;
}
};
int main() {
Derived d(10, 20);
return 0;
}
程序打印的结果为:
Base constructor called
Derived constructor called
Derived destructor called
Base destructor called
这是因为在创建 Derived 对象时,先调用 Base 的构造函数,再调用 Derived 的构造函数。在销毁 Derived 对象时,先调用 Derived 的析构函数,再调用 Base 的析构函数。因此,打印的结果就是先输出“Base constructor called”,再输出“Derived constructor called”,然后再输出“Derived destructor called”,最后输出“Base destructor called”。
原文地址: https://www.cveoy.top/t/topic/jN0k 著作权归作者所有。请勿转载和采集!