博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++再学习系列] 虚函数的4条规则
阅读量:6201 次
发布时间:2019-06-21

本文共 562 字,大约阅读时间需要 1 分钟。

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

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

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

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

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

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

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

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

本文转自 zhenjing 博客园博客,原文链接:http://www.cnblogs.com/zhenjing/archive/2010/11/30/virtual_function.html   ,如需转载请自行联系原作者

你可能感兴趣的文章
mysql SUBSTRING_INDEX
查看>>
布局方法一
查看>>
webpack--plugins
查看>>
jQuery基础教程-imooc
查看>>
nodeJS:Express框架中session内存存储
查看>>
开始Tornado的源码分析之旅
查看>>
手动在Swift项目中添加ObjectiveC第三方库
查看>>
CocoaPods的安装和使用介绍
查看>>
Kali Linux 2019.1 发布,Metasploit 更新到 5.0 版本
查看>>
SVG的viewBox与preserveAspectRatio属性
查看>>
HTTPS 也不安全?被发现新漏洞会暴露你的数据
查看>>
GNOME 3.31.91 发布,3.32 发布周期第二个 beta 版
查看>>
ELK日志分析方案
查看>>
1. 认识 Rxjs
查看>>
Linux服务器---配置telnet
查看>>
快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等) ...
查看>>
对话 IJCAI 2019 特邀讲者 Leslie Kaelbling:与 AI 和机器人结缘背后的故事(上篇) ...
查看>>
Spring Cloud Alibaba到底坑不坑?
查看>>
数商云供应商采购管理系统平台,为企业解决哪些实质问题 ...
查看>>
什么是TensorFlow?
查看>>