zoukankan      html  css  js  c++  java
  • c++||OOP

      面向对象具有三个特征:数据抽象,继承和动态绑定,用类进行数据抽象,用类派生一个类继承另外一个类,派生类继承基类的成员,动态绑定使编译器能够决定是使用基类中定义的函数还是派生中定义的函数,

      1.继承

        继承使派生类(dervied class)能够继承基类(base class)定义成员,可以无需改变与派生类不相关的操作,派生类可以重定义那些与派生类型相关的成员函数,将函数特化,通过定义基类来派生更多的成员,基类必须指出希望派生类重定义那些函数,可以定义virtual的函数基类重新定义。

      2.动态绑定(dymanatic binding)能够编写使用继承层次中的任意类型的对象,无需关心对象的类型.

      

      3.virtual与其他成员函数

        c++默认不使用动态绑定,当要出发动态绑定时,通过指定虚函数成员进行动态绑定,成员默认为非虚函数,非虚函数不进行动态绑定;第二必须通过基类类型的引用或指针进行函数调用

      4.默认实参与虚函数

        虚函数也有默认实参,如果有用在给定调中的默认实参值,该值在编译时确定;

        如果一个调用省略了具有默认值的实际参数,则所用的值有调用该函数的类型定义,与对象的动态类型无关

        通过基类的引用或指针调用虚函数,则默认实参是在派生类的版本中声明的值,

      5.友元关系

        不能继承,基类的友元对派生类没有特殊访问权限,如果基类被授予友元关系,则只有基类具有特殊访问权限.

        

    //访问对方保护类
    class FC { friend class Frnd; public: FC(); private: protected: int i; }; class Dl :FC { friend class FC; public : int getFc(FC f) { return f.i; } private: }; class Frnd { public: int mem(FC b) { return b.i; } int men(); private: int dc; };

      6.继承静态成员

        如果基类定义了static成员,则整个继承层次中只有一个成员,无论派生多少类,每个static只有一个实例

      7.构造函数和复制控制

        每个派生类对象由派生类定义成员中加上一个或者多个基类子对象构成,这会影响着派生类对象的构成.

      7.2重构

        重构包括重新定义类层次,将操作或数据类转移,重构改变后代码必须重新编译

       7.3尊重基类接口

        构造函数只能初始化直接基类的原因每个定义了自己的接口,一旦定义所有的交互通过该接口.

      8虚构析函数

        删除动态分配对象,需要析构函数释放内存之前清楚对象,在继承层次中,指针的静态类型删除不同时需要析构函数,清楚基类成员而必须为虚函数

      9.句柄类

        通过定义句柄(handlde)和包装(cover)来存储管理类指针,指针指向对象可以变化,虚成员的行为在运行时根据句柄访问继承操作.

      

          

          

  • 相关阅读:
    PHP的ip2long和long2ip函数的实现原理
    PHP在浏览器上跟踪调试的方法以及使用ChromePhp、FirePHP的简单介绍
    PHP静态延迟绑定简单示例
    [deviceone开发]-do_Socket组件示例
    [deviceone开发]-大家比较关注的应用内部升级
    [deviceone开发]-do_Viewshower的动画效果示例
    [deviceone开发]-企业OA项目开源分享
    [deviceone开发]-do_RichLabel的简单示例
    [deviceone开发]-直播APP心形点赞动画示例
    [deviceone开发]-纳豆项目源码开源
  • 原文地址:https://www.cnblogs.com/EraserHead/p/7499330.html
Copyright © 2011-2022 走看看