Derived class重新定义继承而来的Private Virtual函数
2016-01-23 10:11
267 查看
基类有一个公有函数,也有一个私有的虚函数,共有函数调用此私有虚函数,那么,当派生类继承基类时,派生类可重写此私有虚函数,然后当派生类对象调用healthValue()时,doHealthValue()将调用派生类重写的doHealthValue()。这种手法称为non-virtual interface(NVI)。这个non-virtual函数(healyhValue)称为virtual函数(doHealthValue)的外覆器。
NVI涉及在Derived classes内重新定义private virtual函数,重新定义若干个Derived class并不调用的函数!!这里并不矛盾。“重新定义virtual 函数”表示某些事“如何”完成,“调用virtual 函数”则表示它“何时”被完成。这些事情都是各自独立互不相关的。NVI允许Derived class重新定义virtual函数,从而赋予它们“如何实现机能”的控制能力,但Base class保留诉说“函数何时被调用”的权力。所以,Derived
class可重新定义继承而来的private virtual函数是合情合理的。
(来自Effective C++)
相关文章推荐
- LeetCode 119 Pascal's Triangle II(帕斯卡三角形II)(vector、数学公式)(*)
- Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
- Ubuntu14.04 搜索不到WIFI或连接不上的解决方法。
- 处理死链接
- SQL Server代理(3/12):代理警报和操作员
- Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
- 整数去重题解
- MyBatis与Hibernate的比较
- 安卓蓝牙篇-适合入门
- MySQL游标的使用
- Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)
- MD5
- 人人必知的10个jQuery小技巧
- 数据结构(C实现)------- 单链表
- android camera HAL 错误数据流处理
- DL动态加载框架技术文档
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
- 极光推送
- [ssh新闻发布系统第二天] 读取新闻
- MySQL - 建库、建表、查询