高效C++:继承和实现

  如何正确的使用继承和实现是本章说明的重点。

确定public继承的关系是is-a

  • public继承等同于is-a

  • 对public继承,所有base的特性,在derived上都适用

避免遮掩继承而来的名称

  • Deried中的函数会掩盖base中的函数,不论函数是成员函数、虚函数亦或是纯虚函数(不同作用域的函数,名称相同也不构成重载)

  • 使用 using base::f 的语法在Deried中强制使用base中被掩盖的函数

  • 一定要记清楚,Deried中使用base中的同名函数就违背is-a法则

区分接口实现和实现继承

  • non-virtual:指定接口继承和强制实现

  • virtual:指定接口继承和一个缺省实现版本

  • pure-virtual分两种情况:

    • 没有函实现:指定接口继承

    • 有函数实现:指定接口继承和一个缺省实现版本(加作用域调用)------ 和virtual相同

猜你喜欢

转载自www.cnblogs.com/chusiyong/p/11452666.html