C++--多重继承


在实际中,一个派生类可以派生出两个或者多个基类,派生类从两个或者多个基类中继承所需要的属性,在这种情况下,C++允许一个派生类同时继承多个基类。这称为多重继承。

多重继承的声明方法:

class D:public A,private:B,protected C
{
  类D新增的成员
}
D是多重继承的派生类,它以公有继承的方式继承A类,以私有继承的方式继承B类,以保护继承的方式继承C类。按照不同的方式继承A,B,C属性,确定各基类的成员在派生中的访问权限。

多重派生的构造函数

派生类构造函数名(总参数列表)基类1构造函数(参数列表),基类2构造函数(参数列表),基类2构造函数(参数列表),基类3构造函数(参数列表)
{
派生类中新增成员数据初始化语句
}
多重继承会继承引起二义性问题

(1)两个基类中有同名的成员

class A
{
 public:
	int a;
	void display();
};
classB
{
 public:
	int a;
	void display();
};
class C:public A, public B
{
 public:
	int b;
	void show();
};
在main函数中定义了C类对象C1:

C C1;
C1.a=3;
C1.display();
由于基类中A和B中都有成员 a 和成员函数 display,编译系统无法判别要访问的哪一个基类成员。可以用基类名限定:

C1.A::a =3;
C1.A:display();
(2)两个基类和派生类中都有同名成员,修改C类:

class C:public A, public B
{
 public:
	int a;
	void display();
};

同样的,在main中如下定义:

C C1;
C1.a=3;
C1.display();

则系统访问的是派生C中成员。

规则是:基类中的派生类成员被覆盖,屏蔽,或者说是不可见的,或者说是:派生类中的同名成员覆盖了基类的同名函数。

(3)类A和B是从同一个基类派生的。

class N
{
public:
    int a;
    void display();
};
class A:public N
{
    int a1;
};
class B:public N
{
    int a2;
};
class C:public A,public B
{
public:
    int a3;
    void show();
};
int main()
{
    C c1;
}
从程序中,我们可以得到C类中的数据成员和成员函数:

数据成员:

int A::a;

int A::a1;

int B::a;

int B::a2;

int a3;

成员函数:

void A::display();

void B:display();

void show();

如果要访问类N的派生类A的基类成员

c1.A::a=3;
c1.A::display();










  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值