C++程序设计语言--第十五章:类层次结构

1、多重继承

重载解析的使用不会跨越不同类的作用域。

使用声明可以将不同类中的函数引入到一个公共的作用域。在一个类定义里的使用声明所引用的必须是基类的成员。

在任何派生类中的virtual基类总用同一个(共享)对象表示。

虚基类的构造函数将在其派生类的构造函数之前调用。

多重继承能使兄弟类之间共享信息。

在覆盖虚基类的函数的时候,必须有一个函数覆盖所有其他的函数。

2、访问控制

protected是描述供派生类使用的操作的极好方式。

对于基类的访问描述符控制着对基类成员的访问,以及从派生类类型到基类类型的指针和引用转换。考虑从基类B派生出的类D:

  • 如果B是private基类,那么它的public和protected成员只能由D的成员函数和友元访问。只有D 的成员和友元能将D*转换到B*。
  • 如果B是protected基类,那么它的public和protected成员只能由D的成员函数和友元,以及由D派生的类的成员函数和友元访问。只有D 的成员和友元以及由D派生出的类的成员和友元能将D*转换的B*。
  • 如果B是public基类,那么它的public成员可以由任何函数访问,它的protected成员能由D的成员函数和友元,以及D 的派生类的成员函数和友元访问。任何函数都能将D*转换到B*.

3、运行时类型信息

dynamic_cast<>()运算符有两个参数,一个是<>括起来的类型,另一个是()括起来的指针或者引用。

dynamic_cast要求一个到多态类型的指针或者引用,以便做向下强制或交叉强制。目标类型不必是多态的,可以将一个具体类型包裹在一个多态类型里。

dynamic_cast能从多态性的虚基类强制到某个派生类或者兄弟类,static_cast不检查被强制的对象,所以它做不到这样。

一个类对象并不简单是一块存储。类对象是通过其构造函数从“原始存储”中构筑起来的,并通过其析构函数的执行使它重归于“原始存储”。构造是自下而上的过程,析构是自上而下。一个类对象也就是在它能得以构造或析构的意义上才称其为对象。

通过typeid运算符可以知道一个类的名字或者它的布局。

4、指向成员的指针

指向成员的指针就是一种标识类成员的值。

5、自由存储

基类添加虚析构函数,保证清理。

定义一个函数,由它调用构造函数并返回构造起来的对象,可以构造一个对象而不必知道其确切的类型。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值