可以继承到,不一定访问到
继承时的声明为准,从左向右
基类,内嵌,派生类
#include <iostream>
using namespace std;
class Base1 {
public :
Base1(int i) { cout << "Constructing Basel" << i << endl; }
};
class Base2 {
public:
Base2(int j) { cout << "Constructing Base2" << j << endl; }
};
class Base3 {
public:
Base3() { cout << "Constructing Base3" << endl; }
};
class Derived :public Base2, public Base1, public Base3 {
public:
Derived(int a,int b,int c,int d):Base1(a),member2(d),member1(c),Base2(b){}
private:
Base1 member1;
Base2 member2;
Base3 member3;
};
//int fun(int x[10], int n) { return sizeof(x); }
int main() {
Derived obj(1, 2, 3, 4);
}
----------------------------
Constructing Base22
Constructing Basel1
Constructing Base3
Constructing Basel3
Constructing Base24
Constructing Base3
请按任意键继续. . .
#include<iostream>
using namespace std;
//多继承同名函数
class B1 {
public:
int nV;
void fun() { cout << "Member of B1" << endl; }
};
class B2 {
public:
int nV;
void fun() { cout << "Member of B2" << endl; }
};
class D1: public B1, public B2{
public:
int nV;
void fun() { cout << "member of D1" << endl; }
};
int main() {
D1 d1;
d1.nV = 1;
d1.fun();
d1.B1::nV = 2;
d1.B1::fun();
d1.B2::nV = 3;
d1.B2::fun();
}
---------------------
member of D1
Member of B1
Member of B2
请按任意键继续. . .