虚函数

对于常规的基类函数来说 :

1 尽量使用非虚拟接口模式 (NVI) 让接口函数成为非虚拟的 .

2 尽量让虚函数成为私用的 .

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

4 基类的析构函数应该要么为共有虚函数 , 要么为保护虚函数 .

说明 : 1,2 两条将虚共有接口的两个职责进行了很好的分解 , 遵守了单一职责原理 .

第 4 条说明了 , 如果要使用多态 ( 指针调用 ), 那么基类的析构函数一定要为虚函数 ; 如果基类本身的设计不是处于多态考虑的话 , 那么就应该将析构函数设为保护类型 . 这样可以防止出现使用指针的析构 ( 基类无法被直接析构 ), 只有派生类才能析构基类 .

1) 非虚接口模式 (NVI) 的说明:基类对接口具有完全控制权,很方便在一个单一的、可复用的地方实施(enforce) 接口的前条件跟后条件、插入一些设备或做一些类似的事情。更好的是实现接口和实现分离;让基类在变化面前更稳定。条件检查可以仅在调式期有效,这更易于控制。如果非虚函数仅有唯一一行转发调用,编译器会做内联优化,没有效率问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值