码迷,mamicode.com
首页 > 编程语言 > 详细

c++||OOP

时间:2017-10-13 21:25:30      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:通过   存储   virt   自己的   关系   访问   log   ase   虚函数   

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

  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)来存储管理类指针,指针指向对象可以变化,虚成员的行为在运行时根据句柄访问继承操作.

  

      

      

c++||OOP

标签:通过   存储   virt   自己的   关系   访问   log   ase   虚函数   

原文地址:http://www.cnblogs.com/EraserHead/p/7499330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!