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