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

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

虚函数的 4 条规则

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

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

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

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

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

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

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

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

 

转载于:https://www.cnblogs.com/wencan-gz/archive/2012/11/13/2768622.html

你可能感兴趣的文章
MJExtension常用方法
查看>>
第四次作业——项目选题报告
查看>>
浅谈Object.create
查看>>
【364】SVM 通过 sklearn 可视化实现
查看>>
python sys.exit()函数说明
查看>>
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序...
查看>>
高并发的处理方案
查看>>
Android深度探索第一章节的总结
查看>>
valgrind检查still reachable情况
查看>>
matlab练习程序(灰度图直方图均衡化)
查看>>
得到RTP包中的timestamp
查看>>
rowid去重(转)
查看>>
恋爱侧面观
查看>>
Ubuntu14.04运行lsdslam与问题解决
查看>>
python字典常见操作
查看>>
POJ1201Intervals(差分约束系统)
查看>>
jquery源码
查看>>
python机器学习入门(Day6:Decision tree)
查看>>
杭电 2899 题解题报告
查看>>
php 多条件查询
查看>>