有如下的C++代码
#include
<
iostream
>
using namespace std;
class Base
{
public :
Base( int i) {cout << " Base constructor called " << i << endl;}
~ Base( void ) {cout << " Base destructor called " << endl;}
};
class Base1: public Base
{
public :
Base1( int i, int j):Base(j) {cout << " Base1 constructor called " << i << endl;}
~ Base1( void ) {cout << " Base1 destructor called " << endl;}
};
class Base2
{
public :
Base2( int i) {cout << " Base2 constructor called " << i << endl;}
~ Base2( void ) {cout << " Base2 destructor called " << endl;}
};
class Base3
{
public :
Base3( int i) {cout << " Base3 constructor called " << i << endl;}
~ Base3( void ) {cout << " Base3 destructor called " << endl;}
};
class Derived: public Base2, public Base1, public Base3
{
Base3 member3; Base1 member1; Base2 member2; Base member;
public :
Derived( int i, int a, int b, int c, int d, int e, int f, int g)
:Base1(g,a),member2(e),member1(g,d),Base2(b),member3(f),Base3(c),member(i)
{
cout << " Derived constructor called " << i << endl;
}
~ Derived( void ) {cout << " Derived destructor called " << endl;}
};
int main()
{
Derived objD( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
return 0 ;
}
using namespace std;
class Base
{
public :
Base( int i) {cout << " Base constructor called " << i << endl;}
~ Base( void ) {cout << " Base destructor called " << endl;}
};
class Base1: public Base
{
public :
Base1( int i, int j):Base(j) {cout << " Base1 constructor called " << i << endl;}
~ Base1( void ) {cout << " Base1 destructor called " << endl;}
};
class Base2
{
public :
Base2( int i) {cout << " Base2 constructor called " << i << endl;}
~ Base2( void ) {cout << " Base2 destructor called " << endl;}
};
class Base3
{
public :
Base3( int i) {cout << " Base3 constructor called " << i << endl;}
~ Base3( void ) {cout << " Base3 destructor called " << endl;}
};
class Derived: public Base2, public Base1, public Base3
{
Base3 member3; Base1 member1; Base2 member2; Base member;
public :
Derived( int i, int a, int b, int c, int d, int e, int f, int g)
:Base1(g,a),member2(e),member1(g,d),Base2(b),member3(f),Base3(c),member(i)
{
cout << " Derived constructor called " << i << endl;
}
~ Derived( void ) {cout << " Derived destructor called " << endl;}
};
int main()
{
Derived objD( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
return 0 ;
}
用 $ g++ -Wall -o base1 base1.cpp 进行编译
运行 $ ./base1 结果为