zoukankan      html  css  js  c++  java
  • C++中的面向对象笔记

    公共继承,相当于属于关系。如CLASS B:public A,表示B就是A,A做到的,B也能做到。

    CLASS A
    {};
    CLASS B:public A
    {};
    A a;
    B b;
    a=b;//错误,因为a不一定是b
    b=a;//正确,b就是a

     public继承下,会出现名字覆盖:B与A若有同名函数,则A中的该函数将被覆盖,包括A中该函数的重载函数。

    关于虚函数

      含有纯虚函数如: virtual void fun()=0; 的类是抽象类,我们不能创建抽象类的对象。若A中有纯虚函数,则A a=new A是错的,而A a=new B才是正确的。

      纯虚函数:

        派生类中必须重新声明该函数。(声明一个纯虚函数的目的是为了让派生类只继承接口)

      纯虚函数的实现,需要申请才能使用,如下所示

    CLASS A
    {
        virtual void fun()=0;
    };
    void A::fun()
    {
        //实现
    }
    
    CLASS B
    {
        virtual void fun()
        {
            A::fun();//需要声明使用A的实现
        }
    };
    
    CLASS C
    {
        virtual void fun();//可以自己实现
    };
    void C::fun()
    {
        //C的fun
    }

      非纯虚函数:

        派生类会继承该函数的声明与实现,可自己实现以覆盖。不安全的原因是:派生类忘记自定义继承过来的函数时,会使用默认的实现(即基类的实现)。而此  默认的函数实现可能不适合此派生类。

      非虚函数:

        抽象类(只能是抽象类)会强制派生类继承该类的非虚函数,即抽象类的非虚函数将会覆盖所有派生类的同名函数,此做法刚好与非抽象类的继承相反。

    总结:

      在公共继承下,纯虚函数、非纯虚函数和非虚函数在抽象类的继承当中的作用分别是:只继承接口、继承接口与默认实现、继承接口及强制实现。

  • 相关阅读:
    MSSQL查询表占用空间
    JS字典
    匹配是否指定主域名
    站点文件删除不了提示权限不足
    事件委托发布-订阅
    微信中打开第三方应用
    以Spring Bean配置文件为例解释 xmlns,xmlns:xsi,xsi:schemaLocation
    Hdfs的读出机制
    Hdfs的写入机制
    spring常用注解的作用
  • 原文地址:https://www.cnblogs.com/howardhuo/p/4381561.html
Copyright © 2011-2022 走看看