第十四章:代码重用

目录

1.领起:

2.包含关系的直接实现:

3.三种继承:

4.多重继承(MI)

5.类模板


1.领起:

1.1.在公有继承后,这一章目的是为了介绍类的包含关系。例如鲨鱼拥有鱼翅,鲨鱼和鱼翅就是两个存在包含关系的类。

1.2.这一章将介绍类模板。

2.包含关系的直接实现:

2.1.注意:当大类包含小类时,大类无法访问小类的私有数据,但可以调用公有方法。

2.2.注意:关键字explicit用于构造函数关闭隐式转换。

2.3.吐槽:很多细节方面的实现放在了书本里,实践时候复习即可。

3.三种继承:

3.1.吐槽:三种继承关系很容易让人把自己转晕,这里写下个人理解方便记忆。

3.2.注意:包含与私有继承的选择中,若要访问原类中的保护成员,或者说重新定义虚函数,那么应该使用私有继承;除此之外,应使用包含关系。

3.3.诠释个人理解:

a、先把类内的各种数据划分四个种类:1.隐有、2.私有、3.保护、4.公有。这些数据的特性很简单:第一种类内、外界都不可用,但或许可以通过类内可用的数据,即其余三种种类的数据(比如函数)做到隐用;第二种和第三种类内可用、外界则是不可用;第四种类内、外界都可用。

(用:作用域)

b、这些数据有一个特性是:它们可以是隐式继承来的,也可以是类内的显式书写;所以类内察看这些数据时,可能肉眼见得到,也可能见不到。

c、这时候从数据角度描述三种继承,继承意味着派生类将基类的数据尽数拥有下来,现在只是数据的种类划分问题:

公有继承:公有与保护的数据种类都不变,私有的数据种类变为隐有;

保护继承:公有变为保护、保护不变、私有变为隐有;

私有继承:公有和保护都变私有、私有变隐有。

从这个角度去看不同继承的本质,就会变成数据种类的变化。所以再去想继承的话,一切都不过是它的数据种类的变化,以及你想要新添的数据,或许这就是代码重用吧。

而与此同时,也有一些办法可以改变继承时候的数据种类变化。具体的实现在书本中,复习时候可以注意。

3.4.骚操作问题:对于骚操作原理,即为基类指针赋予派生类地址。对于在公有继承中,类内、外界都如此;但在保护继承中,只能在派生类中如此;在私有继承中,这一点更是禁用。但与此同时,可以对骚操作进行拓展,即进行强制显式转化,将派生类强制转化为基类。

4.多重继承(MI)

4.1.定义:一个类可以继承多个类,此时即为多重继承。

4.2.两个问题:第一是可能会继承两个一样的数据;第二是同名函数的使用。

4.3.虚基类:将类声明为虚后,将解决第一个问题;与此同时加上限定名,可以解决第二个问题。

4.4.具体实现有很多细节,并对这两个基础问题有很多深入且不同的部分,复习时应该注意。

5.类模板

5.1.其类似于函数模板,旨在同一功能下的多种数据类型的实现。其具体的定义细节可以在书中观看。

5.2.模板可以是类的数据类型,也可以是指针。但是使用指针的时候,比如单纯使用指针,就无法开辟内存空间,做到存储;数组的话,数组名的限制很多,它不能当成纯粹的变量使用;然后是new,最好创建一个指针数组去承载。

5.3.模板的一些细节:递归实现多维;多个类型参数;默认参数。这些具体的实现细节可以看书。

5.4.模板的几种具体化细节。

5.5.模板用于类的数据成员,具体的实现有很多细节。

5.6.模板用作参数的细节。

5.7.模板与友元的细节。

5.8.吐槽:模板的细节很多,如果尽数写下眼睛都花,不如到时候看书,但大致可以按照这样的分块需求去重新记忆。与此同时,要同函数模板一起复习,将有更好的效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值