第六节,多重继承及虚函数
来源:互联网 发布:淘宝上买车险怎么理赔 编辑:程序博客网 时间:2024/06/08 05:59
1,多重继承
我接触的语言中,能支持多重继承的也就C++了,下面看看他到底怎么个多继承法。
入正题,看代码:
#include <iostream>class Peolpe{public: int age; void setAge(int aAge) { age = aAge; }; void printf() { std::cout<<"输出age:"<<age; }};class Man{ int age1;public: void setAge(int aAge) { age1 = aAge; }};class Woman:public Peolpe,public Man{public:};int main(int argc, const char * argv[]){ Woman w; w.Man::setAge(55); w.printf(); return 0;}
从上面看到,我定义了三个类,其中前两个类People,Man是基类,我把Woman当做子类,Woman继承于People,Man.
多重继承需要注意的点:
(1),多重继承的父类用“,”隔开
(2),当两个父类具有相同的成员函数,例如上例子中得setAge,则在调用该成员函数的时候需要标明类名,例如:
w.Man::setAge(55);当然了,也可以不那么做这就需要用到关键字Virtul,个人不太喜欢这个关键字,如果需要自己研究的可以百度下看看,用了这个关键字修饰继承的类之后,再调用同名成员函数的时候就不需要再去标明来自哪一个类了。(3),这个需要注意:默认情况下,子类继承父类的默认构造函数,即使不带任何参数的构造函数,子类也继承默认的析构函数。
2,虚函数
上代码:
#include <iostream>class Father{public: virtual void jump() { std::cout<<"父亲跳十万米\n"; }; void run() { std::cout<<"父亲跑步\n"; };};class Son:public Father{public: void jump() { std::cout<<"儿子跳十万米\n"; }; void run() { std::cout<<"儿子跑步\n"; };};int main(int argc, const char * argv[]){ Father * father = new Son; father->jump(); father->run(); return 0;}
输出:
儿子跳十万米
父亲跑步
通过输出结果,我们可能会感到诧异,然后就该去代码中看两个方法有什么不同。
然后会发现,不同点就是在于关键字:virtual
用virtual修饰的函数,我们称之为虚函数。用virtual修饰表示该函数有多种形态即该函数可能被多个对象所拥有,并且功能都不一样。
系统在执行到有virtual修饰的成员函数的时候,会判断是哪一个函数调用了他,然后去调用该函数的同名函数。
- 第六节,多重继承及虚函数
- 多重继承与虚函数
- 多重继承和虚函数
- c++ 继承 多重继承 多态性 虚函数
- c++多重继承和虚继承及虚函数深入理解
- c++多重继承和虚继承及虚函数深入理解(转)
- 多重继承、虚函数、this指针偏移
- 多重继承下的虚函数调用
- 多重继承与虚函数表
- 多重继承下的虚函数调用~
- 多重继承与虚函数表
- 多重继承中的纯虚函数“妙用”
- C++ 虚函数表 多重继承
- 多重继承下的虚函数表
- C++之虚函数和多重继承
- 多重继承下的虚函数调用~
- c++多重继承+虚函数表
- c++中的多重继承和虚函数
- 从文件 I/O 看 Linux 的虚拟文件系统
- 53个要点提高PHP编程效率
- Hash dump的神器----quarkspwdump
- 车库咖啡创始人苏菂:对于创业咖啡,我的看法
- com.opensymphony.xwork2.ActionSupport类源码
- 第六节,多重继承及虚函数
- 关于子类对象的实例化
- iMatrix平台流程引擎之办理人设置
- 同步VS异步
- 利用SWFUpload V2.2.0 免费控件进行大文件上传!
- Flash文本引擎, 第一部分: 概述
- 看原理图之UART
- RTP协议之Header结构解析
- Android调用Market搜索软件