要点说明:
- 类体中的函数会自动成为内联函数
- 一旦用户自定义构造函数,编译器则不再自动生成默认构造函数
- 构造函数可以重载,创建对象时只有一个构造函数会被调用;析构函数没有参数,不能重载,一个类只能有一个析构函数
- 构造函数调用顺序,Base()->Derived();析构函数调用顺序,~Derived()->~Base()
- 构造函数不是虚函数,析构函数最好是虚函数,用于解决基类指针进行析构不充分的问题
- 继承如果不限定public,默认是private
- 继承方式中的public,protected,private用来限定基类成员在派生类中的最高访问权限,由基类成员权限和派生类继承权限最终确定基类成员在派生类中的权限,取最小权限,另外基类中的private成员在派生类中始终不能使用
- 同一个作用域内的同名函数才具有重载关系
- 派生类中的成员如果和基类成员重名,就会遮盖基类继承过来的成员,名字查找由内层向外层,优先查找派生类的成员
- 如果在派生类找到同名函数,则不再去基类查找。再在同作用域下,在函数重载列表进行查找
函数或运算符重载属于编译时多态,多态还包括运行时多态,也就是虚函数相关,类中有虚函数表的指针,用于基类指针指向派生类对象,在进行调用的时候查找虚函数表,进行派生类成员调用。