欢迎光临散文网 会员登陆 & 注册

Effective C++ 第三十四条 Differentiate between inheritance of interfa

2023-02-03 09:01 作者:九思519  | 我要投稿

区分接口继承和实现继承

C++  derived 继承 base,对于接口和实现的选择也有几种方式

  1. 继承接口不继承实现

  2. 继承接口外加一份缺省的代码实现,可以重写

  3. 继承接口和实现,不重写

下面为这三种情况详细介绍该如何做

1.继承接口不继承实现

base 中的函数采用 pure virtual ,这样就可以让 derived 不得不为其写一份实现

2.继承接口外加一份缺省实现,可以重写

采用 impure virtual 实现

如果需要重写就在 derived 中重新实现一遍 fun,如果不需要则什么都不需要写。

3.继承接口和实现,且不需要重写

采用 non-virtual 来实现

总结:

  • 接口继承和实现继承不同。在 public 继承之下,derived classes 总是继承 base class 的接口。

  • pure virtual 函数只具体指定继承接口。

  • impure virtual 函数具体指定接口继承以及缺省实现继承。

  • non-virtual 函数具体指定接口继承以及强制性实现继承。


Effective C++ 第三十四条 Differentiate between inheritance of interfa的评论 (共 条)

分享到微博请遵守国家法律