您的位置:首页 > 其它

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++)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: