C++的繼承機(jī)制中,構(gòu)造函數(shù)的執(zhí)行順序如下:
基類構(gòu)造函數(shù):首先執(zhí)行基類的構(gòu)造函數(shù)。這是為了初始化繼承自基類的成員變量和繼承基類的部分。
派生類成員變量初始化:在基類構(gòu)造函數(shù)執(zhí)行完畢后,開始執(zhí)行派生類中的成員變量的初始化。這是為了初始化在派生類中聲明的成員變量。
派生類構(gòu)造函數(shù):最后執(zhí)行派生類的構(gòu)造函數(shù)。這是為了初始化在派生類中聲明的特定于派生類的成員變量和執(zhí)行其他派生類相關(guān)的操作。
以下是一個(gè)簡(jiǎn)單的例子:
#include <iostream>
using namespace std;
class Base {
public:
Base() {
cout << "Base constructor called" << endl;
}
};
class Derived : public Base {
public:
int x;
Derived() {
cout << "Derived constructor called" << endl;
x = 10;
}
};
int main() {
Derived d;
return 0;
}
輸出結(jié)果:
Base constructor called
Derived constructor called
在這個(gè)例子中,首先執(zhí)行基類Base
的構(gòu)造函數(shù),然后初始化派生類Derived
中的成員變量x
,最后執(zhí)行派生類Derived
的構(gòu)造函數(shù)。