2022年虚函数,抽象方法,抽象类,接口的区别和联系 .pdf
《2022年虚函数,抽象方法,抽象类,接口的区别和联系 .pdf》由会员分享,可在线阅读,更多相关《2022年虚函数,抽象方法,抽象类,接口的区别和联系 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、先看各自的概念:虚函数是动态联编的基础,它是引入派生概念之后用来表现基类和派生类成员函数之间的一种关系的。虚函数在基类中定义,它也是一种成员函数,而且是非静态成员函数。引自 msdn :若一个实例方法的声明中含有virtual 修饰符,则称该方法为虚拟方法;一个虚拟方法的实现可以由派生类取代。取代所继承的虚拟方法的实现的过程称为重写该方法;在一个虚拟方法调用中,该调用所涉及的那个实例的运行时类型确定了要被调用的究竟是该方法的哪一个实现。虚函数的限制:1.虚函数仅适用于有继承关系的类对象, 所以只有类的成员函数才能说明为虚函数. 2.静态成员函数不能是虚函数. 3.内联函数不能是虚函数. 4 构
2、造函数不能是虚函数. 5.析构函数可以是虚函数. 接口可以有静态成员、嵌套类型、抽象、虚拟成员、属性和事件。实现接口的任何类都必须提供接口中所声明的抽象成员的定义。接口可以要求任何实现类必须实现一个或多个其他接口。对接口有以下限制:接口可以用任何可访问性来声明,但接口成员必须全都具有公共可访问性。不能向成员或接口自身附加安全性权限。接口可以定义类构造函数,但不能定义实例构造函数。每种语言都必须为需要成员的接口映射一个实现提供规则,因为不只一个接口可以用相同的签名声明成员,且这些成员可以有单独的实现。接口可以由类和结构来实现。为了指示类或结构实现了某接口,在该类或结构的基类列表中应该包含该接口的
3、标识符。如果一个类或结构实现某接口,则它还隐式实现该接口的所有基接口。即使在类或结构的基类列表中没有显式列出所有基接口,也是这样。虚函数为了重载和多态的需要,在基类中是由定义的, 即便定义是空, 所以子类中可以重写也可以不写基类中的函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java 中的接口函数!虚函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函
4、数。class Cman public: virtual void Eat(),; void Move(); private: ; class CChild : public CMan public: virtual void Eat(),;private: ; CMan m_man; CChild m_child; / 这才是使用的精髓,如果不定义基类的指针去使用,没有太大的意义CMan *p ; p = &m_man ; p-Eat(); /始终调用 CMan 的 Eat 成员函数,不会调用 CChild 的p = &m_child; p-Eat(); /如果子类实现 (覆盖) 了该方法,
5、则始终调用CChild 的 Eat 函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - / 不会调用 CMan 的 Eat 方法;如果子类没有实现该函数,则调用CMan 的Eat 函数p-Move(); /子类中没有该成员函数,所以调用的是基类中的纯虚函数引入原因: 1、同“虚函数”; 2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。/ 纯虚函数就
6、是基类只定义了函数体,没有实现过程定义方法如下/ virtual void Eat() = 0; 直接=0 不要 在 cpp 中定义就可以了/ 纯虚函数相当于接口,不能直接实例话,需要派生类来实现函数定义/ 有的人可能在想,定义这些有什么用啊,我觉得很有用/ 比如你想描述一些事物的属性给别人,而自己不想去实现,就可以定/ 义为纯虚函数。说的再透彻一些。比如盖楼房,你是老板,你给建筑公司/ 描述清楚你的楼房的特性,多少层,楼顶要有个花园什么的/ 建筑公司就可以按照你的方法去实现了,如果你不说清楚这些, 可能建筑/ 公司不太了解你需要楼房的特性。用纯需函数就可以很好的分工合作了虚函数和纯虚函数区别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年虚函数 抽象方法 抽象类 接口的区别和联系 2022 函数 抽象 方法 接口 区别 联系
限制150内