博览网:第三周笔记

仅个人学习记录,毫无参考性  望知悉!!!

零:面向对象

指多个class之间的关系,一般有Composition「复合」、Inheritance「继承」

实心菱形表示有东西

壹:Composition「复合」11. 01:58


博览网:第三周笔记_第1张图片
指class中包含(拥有)其他的一个或者多个东西(class等)


指class中包含(拥有)其他的一个或者多个东西(class等)


博览网:第三周笔记_第2张图片

                                                      注:代码会由编译器自动添加,但只能调用默认的构造函数

生命期同步,当外部存在时,内部必然也存在

貳:Delegation(委托)11.20:49


博览网:第三周笔记_第3张图片


指class通过reference「指针」指向另一个或多个东西「class等」

                                                                注:一般都是讲reference「引用」,不讲pointer「指针」

生命期不同步,通过指针当外部需要时才会创建委托对象

有名的写法之一:Handle/Body「pimpl」,无论Body如何改动,Handle不必重复编译


叁:Inheritance(继承)11.32:23

语法:三种语法继承,一般与虚函数搭配

public「公开的」:对于对象和成员函数都是可见的,即可以引用

protected「受保护的」:对于成员函数是可见的,但对于对象来说是不可见的,这个声明主要是用在继承 中

private「私有的」:对于成员函数是可见的,对于对象是不可见的

继承的关系中所有的关系都可以被继承下来:

数据的继承:继承的是内存

函数的继承:是函数的调用权

博览网:第三周笔记_第4张图片
栗子:public继承


博览网:第三周笔记_第5张图片

注:base class「父类的」的dtor「析构函数」必须是virtual「虚函数」,否则会出现undefined behavior「未定义的行为」

良好习惯:只要calss将会成为一个父类,就将dtor「析构函数」,设为virtual「虚函数」

肆:虚函数12.0:0

语法:在任何一个成员函数之前加上virtual关键字,就成为虚函数

non virtual函数:不希望dericed class「子类」重新定义「override 覆写」

virtual函数:        希望dericed class重新定义「override 覆写」,有默认定义

pure virtual函数:必须dericed class「子类」重新定义「override覆写」,无默认定义


博览网:第三周笔记_第6张图片

你可能感兴趣的:(博览网:第三周笔记)