您的位置:首页 > 编程语言 > C语言/C++

[C++再学习系列] 虚函数的4条规则

2009-07-02 21:32 435 查看

虚函数的

4

条规则

对于常规的基类函数来说

:

1

尽量使用非虚拟接口模式

(NVI)

让接口函数成为非虚拟的

.

2

尽量让虚函数成为私用的

.

3

只有当派生类需要调用基类对某个虚函数的实现时,才把虚函数声明为保护的

.

4

基类的析构函数应该要么为共有虚函数

,

要么为保护虚函数

.

说明

: 1,2

两条将虚共有接口的两个职责进行了很好的分解

,

遵守了单一职责原理

.



4

条说明了

,

如果要使用多态

(

指针调用

),

那么基类的析构函数一定要为虚函数

;

如果基类本身的设计不是处于多态考虑的话

,

那么就应该将析构函数设为保护类型

.

这样可以防止出现使用指针的析构

(

基类无法被直接析构

),

只有派生类才能析构基类

.

1)

非虚接口模式

(NVI)

的说明:基类对接口具有完全控制权,很方便在一个单一的、可复用的地方实施

(enforce)

接口的前条件跟后条件、插入一些设备或做一些类似的事情。更好的是实现接口和实现分离;让基类在变化面前更稳定。条件检查可以仅在调式期有效,这更易于控制。如果非虚函数仅有唯一一行转发调用,编译器会做内联优化,没有效率问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: