1,运算符:运算符operator就是函数名
(1)单目运算符重载:++(前置,后置 int 占位),--(前置,后置 int 占位),前置返回引用,后置返回 const 修饰的临时变量。
(2)双目运算符:+, -, *, /, %, <, >, <=, >=, ==, !=
(3)赋值运算符:=
(4)位运算符:<<, >>
(5)高级运算符重载:[ ] 下标操作, ->指针操作, ( )仿函数。谓词返回值是 bool 类型,参数是1个(一元)或者2个(一元)
2,多继承出现的问题
(1)非同源多继承出现同名问题(二义性):通过域方式调用
(2)继承的构造顺序是什么顺序:构造顺序:从左往右。
(3)继承+成员属性构造顺序是什么:至上而下,从左往右,与初始化列表无关。
(4)同宗同源多继承出现的问题(菱形继承):造成空间多余浪费。(1)使用虚继承(virtual),减少内存占用,解决调用二义性.(2)virtual会形成一个虚表,而类中的 virtual 是指相续表的指针。(3)virtual实质是一个指针(占4个字节)。(4)虚表是一个函数指针数组,数组里存放的都是函数指针指向虚函数所在的位置。
3,多态:(1)条件定义:(1)必须是继承关系。(2)父类中函数是虚函数,而子类必须重写父类虚函数。
(2)使用条件:父类指针 / 引用指向子类对象。
(3)本质:多态实现使用的是 virtual 虚函数指针指向一个虚函数列表。
(4)抽象类作用:提供一个框架接口,派生类根据需求制定不同的方案