01关系运算符重载
1.自定义数据类型 不会内部做比较 == !=
2.所以要重载 == !=
函数的调用运算符重载
1.()仿函数 对象()看似像函数调用
2.Myadd() 匿名对象
不要重载 && 和 ||
1.本身有短路特性我们无法去实现这种特性 所以不要重载
02继承
网页 很多公共部分 导致实现时候有很多重复的代码
引出继承,基类(父类) 公共网页 具体子类实现不同的内容
1.继承方式 不管公有继承 保护 还是私有 基类中的私有属性, 都不可以继承下去。
公有继承
1 父类中的protected在子类中时候protected,父类中的public在子类中是protected
保护继承
1 父类中的protected在子类中是protected,父类中的public在子类中的public在子类中是protected
私有继承
1 父类中的protected在子类中是private,父类中的public在子类中的private
03继承中的对象模型
子类会继承父类中所有内容,包括了私有属性,只是我们访问不到,编译器给隐藏了
04继承中的构造和析构顺序
1子类创建对象时,先调用父类的构造,然后调用自身构造
2.析构顺序与构造顺序相反
3子类是不会继承父类的构造函数和析构函数
4如果父类中没有合适的默认构造, 那么子类可以利用初始化列表的方式显示调用父类的其他构造
05继承中的同名处理
1成员属性 直接调用先调用子类,如果想调用父类 需要作用域
2 成员函数 直接调用先调用子类,父类的所有版本都会被隐藏,除非显示用作用域运算符去调用
06继承中静态成员的处理
1 类似非静态成员函数处理
2如果想访问父类中的成员,加作用域
07多继承
1 多继承语法 class A : public B1, public B2,…
2 引发二异性
3 想解决二异性问题,就需要通过作用域区分
08菱形继承和虚继承
1解决问题利用虚基类
2sheepTuo内部结构
3vbptr虚基类指针
指向一张虚基类指针通过表找到偏移量,找到公有的数据