C++中类在继承时,派生类必须声明自己的构造函数。派生类在调用构造函数时,会根据初始化列表先调用父类的构造函数,如果初始化列表为空,则会调用父类的默认构造函数。而调用析构函数时,则会先调用派生类的析构函数,再调用父类的析构函数。
#include<iostream> using namespace std; class Solution { public: Solution() {cout << 1 << endl;} Solution(int a) {cout << 2 << endl;} Solution(const Solution& a) { cout << 3 << endl; } ~Solution() { cout << 4 << endl; } }; class Copy: public Solution{ public: Copy() { cout << 11 << endl; } Copy(int a) :Solution(a) { cout << 22 << endl; } Copy(const Copy& a) :Solution(a) { cout << 33 << endl; } ~Copy() { cout << 44 << endl; } }; int main() { Copy a; Copy b(1); Copy c(b); return 0; }