仅个人学习记录,毫无参考性 望知悉!!!
零:面向对象
指多个class之间的关系,一般有Composition「复合」、Inheritance「继承」
实心菱形表示有东西
壹:Composition「复合」11. 01:58
指class中包含(拥有)其他的一个或者多个东西(class等)指class中包含(拥有)其他的一个或者多个东西(class等)
注:代码会由编译器自动添加,但只能调用默认的构造函数,
生命期同步,当外部存在时,内部必然也存在
貳:Delegation(委托)11.20:49
指class通过reference「指针」指向另一个或多个东西「class等」
注:一般都是讲reference「引用」,不讲pointer「指针」
生命期不同步,通过指针当外部需要时才会创建委托对象
有名的写法之一:Handle/Body「pimpl」,无论Body如何改动,Handle不必重复编译
叁:Inheritance(继承)11.32:23
语法:三种语法继承,一般与虚函数搭配
public「公开的」:对于对象和成员函数都是可见的,即可以引用
protected「受保护的」:对于成员函数是可见的,但对于对象来说是不可见的,这个声明主要是用在继承 中
private「私有的」:对于成员函数是可见的,对于对象是不可见的
继承的关系中所有的关系都可以被继承下来:
数据的继承:继承的是内存
函数的继承:是函数的调用权
栗子:public继承注: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覆写」,无默认定义
网友评论