继承

1.公有/私有/受保护继承

基类中的private成员只有基类及其友元函數可以访问,派生类及其用戶无权访问.对于基类的public/protected,则派生类列表中使用的访问标号决定该成员在派生类中的访问级别.

a.public inheritance:成员在基类中是什么类型,在派生类中还是同样的

b.protected inheritance:基类的public/protected成员均变为派生类的protected成员

c.private inheritance:基类的public/protected成员均变为派生类的private成员

2.访问控制和继承

派生类对基类的public/private成员的访问权限和程序中任意其他部分一样

3.protected成员

不能被类的用戶访问,可被该类的派生类访问.派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限(此说明要搭配c++primer 477的例子看才对,即派生类成员函数中可以访问自身对象的protected成员和派生类对象形参中的protected成员,不能访问基类对象形參的protected成员)

4.复制构造函数/赋值操作符VS析构函数

不管是单继承还是多继承,派生类自己定义的析构函数不负责清除基类对象的成员,编译器总是显示调用派生类对象基类部分的析构函数。而如果派生类定义了自己的复制构造函数/赋值操作符,则类负责复制(赋值)所有的基类子部分。

5.多重继承

多重继承容易引发“二义性”,所以调用成员的时候要显示指定是哪一个基类。继承多个基类引入了新的名称冲突的可能性。

6.虚继承

对给定虚基类,无论该类在派生层次中作为虚基类出现多少次,只继承一个共享的基类子对象。假定通过多个派生路径继承成员X,且在某个路径中X是虚基类的成员,在另一条路径中X是后代派生类的成员,不会出现二义性的情况,因为特定派生类实例的优先级高于共享虚基类实例。不过如果X表示后代派生类的不同成员,该成员的直接访问还是二义性的。

虚基类和基类一样,同样支持基类类型指针或引用操纵派生类对象。虚基类有助于减少二义性问题,但是没有完全解决哦。

通常每个类只初始化自己的直接基类。但是在虚派生中,由最底层派生类的构造函数初始化虚基类。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值