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
    }

      非纯虚函数:

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

      非虚函数:

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

    总结:

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

  • 相关阅读:
    Maven setting配置镜像仓库
    MyBatis配置Mapping,JavaType和JDBCType的对应关系,#与$区别
    Git常用命令
    Js JSON.stringify()与JSON.parse()与eval()详解及使用案例
    例:判断是不是自有属性hasOwnProperty方法
    JS中原型链中的prototype与_proto_的个人理解与详细总结
    原型理解:prototype
    JS中attribute和property的区别
    面试题术语
    函数语法
  • 原文地址:https://www.cnblogs.com/howardhuo/p/4381561.html
Copyright © 2011-2022 走看看