zoukankan      html  css  js  c++  java
  • [C++再学习系列] 虚函数的4条规则

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

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

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

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

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

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

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

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

    ---------------------------------------------------

    兄弟的公司:立即购--手机购物,诚信网购

    欢迎转载,请注明作者和出处。

  • 相关阅读:
    第一章 第二节逻辑代数基础
    第一章 第一节数制与编码
    Altium Designer多原理图、PCB更新处理
    AD添加LOGO的方法
    XML中<beans>属性
    程序员值得学习的技术博客
    设计模式
    js分页实例
    Java构造和解析Json数据的方法
    H5+ 移动app学习之三 App离线存储
  • 原文地址:https://www.cnblogs.com/zhenjing/p/virtual_function.html
Copyright © 2011-2022 走看看