C++聚合關系類的構造函數的調用順序,聚合構造函數
如圖,表示一個聚合關系

下面就用簡單的代碼來實現

![]()
1 #pragma once
2 class Engine
3 {
4 public:
5 Engine();
6 ~Engine();
7 };
Engine.h

![]()
1 #include <iostream>
2 #include "Engine.h"
3 using namespace std;
4
5 Engine::Engine()
6 {
7 cout << "調用構造函數:Engine()" << endl;
8 }
9
10 Engine::~Engine()
11 {
12 cout << "調用析構函數:~Engine()" << endl;
13 }
Engine.cpp

![]()
1 #pragma once
2 #include "Engine.h"
3
4 class Car
5 {
6 public:
7 Car();
8 ~Car();
9 private:
10 Engine m_eCar;
11 };
Car.h

![]()
1 #include <iostream>
2 #include "Car.h"
3 using namespace std;
4
5 Car::Car()
6 {
7 cout << "調用構造函數:Car()" << endl;
8 }
9
10 Car::~Car()
11 {
12 cout << "調用析構函數:~Car()" << endl;
13 }
Car.cpp

由此可以看出,對象的構造函數調用的順序就好像我們造車子一樣,先打造好引擎和其他部件才能拼裝好汽車,析構函數的調用就和拆開汽車一樣,先扒開最外面的,然後再扒裡面的。