Code Listing 1:
1#include <cstdio>2#include <iostream>3 4 using namespacestd;5 6 classa{7 Public:8 A () {9cout<<"A"<<Endl;Ten } One }; A classb{ - Public: - B () { thecout<<"B"<<Endl; - } - }; - classC: PublicB Publica{ + //class C:public A,public b{ - Public: + C () { Acout<<"C"<<Endl; at } - }; - intMain () { - - c C; - return 0; in}
Output:
Bac
Analysis:
Multiple inheritance is similar to single inheritance, and it is the base class constructor that executes first. Between multiple base classes, it executes from left to right when declared by a derived class.
Code Listing 2:
1#include <cstdio>2#include <iostream>3 4 using namespacestd;5 6 classa{7 Public:8 A () {9cout<<"A"<<Endl;Ten } One }; A classb{ - Public: - B () { thecout<<"B"<<Endl; - } - }; - classC: PublicB Publica{ + //class C:public A,public b{ - Public: + A; A C () { atcout<<"C"<<Endl; - } - }; - intMain () { - - c C; in return 0; -}
Output:
BAAC
Analysis:
Execution order: base class constructor, initialize member variable, derived class constructor
Multiple inheritance constructor execution order in C + +