zoukankan      html  css  js  c++  java
  • Effective C++条款36: 区分接口继承和实现继承

    注:下面所说虚函数指不是纯虚函数的普通虚函数。

    这里所说的接口继承,指的是继承基类的纯虚函数;实现继承指的是继承基类的虚函数或者普通函数。

    本条款实际上讲的是使用纯虚函数还是虚函数的问题。

    这个条款概括起来就是:

    如果基类不需要实现,实现在派生类中,那么基类中定义纯虚函数;

    如果基类有默认实现,某些派生类可能会重新定义实现,那么基类中定义虚函数;

    如果派生类完全继承基类的实现,不需任何改变,那么基类中定义普通函数。

    纯虚函数只是一个接口,一般基类不需实现这个接口,但是不表示基类不能实现这个接口(和java不同),实际上,纯虚函数可以在基类内声明,在基类外实现(当然也可以在派生类实现)。

    如下面是正确的,注意基类外实现不加virtual.

    class A
    {
    public:
        virtual void fun() = 0;
    };
    void A::fun()
    {

    }

     

    我认为,如果纯虚函数在类外实现,那和普通虚函数的使用没有区别了。

  • 相关阅读:
    flex 只显示年、月的日期选择控件(TimeChooser)
    SQL 实现统计业务
    SQL 时间函数详解
    我与计算机
    ISE中FPGA的实现流程
    总结Verilog中always语句的使用
    VGA 时序标准
    ChipScope软件使用
    FIFO的使用场景
    Verilog 初级入门概念
  • 原文地址:https://www.cnblogs.com/helloweworld/p/3103256.html
Copyright © 2011-2022 走看看