继承知识点总结

  1. final关键字可用于阻止继承的发生,如class Student final()意为Student不可作为基类
  2. 使用using声明可以改变派生类中基类成员的访问权限,如 using Student::m_id;
  3. 若派生类成员的名字和基类的成员名相同,那定义在派生类中的名字会屏蔽掉基类中的成员名
  4. 派生类构造函数的执行过程为:首先调用其直接基类的构造函数,然后构造自身成员,最后执行构造函数函数体,同样,复制构造函数和赋值都需要显式写出基类的操作,否则会调用默认函数,赋予默认值而与想法不符。析构过程则与构造过程相反
  5. 动态绑定触发条件:重写基类的虚函数,还必须用基类的指针或引用才能触发动态绑定 虚函数形如:virtual double area()const {return 0;}重写后:double area()const {return 3.14;} 注:模板成员不能声明为虚函数,因为该成员的行为必须在编译时确定,不能实现动态绑定;若基类某函数被声明为虚函数,则派生类中对应的重写版本自动为虚函数;
  6. 虚析构:通常情况下,基类的析构函数应为虚函数,保证正确delete一个动态派生类对象,若基类析构函数为非虚函数,则delete一个指向派生类对象的基类指针将产生未定义的行为。
  7. override和final关键字:动态绑定通过同名虚函数覆盖实现,利用override显示告诉编译器派生类覆盖基类版本的虚函数,用final阻止派生类覆盖基类虚函数 如void fun()override{};
  8. 抽象类:含有纯虚函数的类为抽象类,纯虚函数:virtual double area()const=0.抽象类只负责接口的声明,不能创建类的实例。
  9. 多重继承和虚继承:一个类可以继承多个类称为多重继承。当出现菱形继承产生二义性时,考虑用虚继承,如class Mammal:virtual Animal{};虚继承的构造由最底层派生类进行构造。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值