C++的继承,多态和组合
来源:互联网 发布:知福茶叶怎么样 编辑:程序博客网 时间:2024/06/05 16:50
首先,继承是子类继承父类的关系;组合是类与类的包含关系;多态是是“一个接口,多种方法”,程序在运行时才决定调用的函数,这里,子类可以修改继承来的父类中的函数(通过虚函数的方式),覆盖掉原来的继承过来的函数。
举个例子,父亲是父类,有吃饭睡觉等等功能,当儿子继承父亲这个类的时候,吃饭,睡觉这些函数直接继承过来就好了,因为都一样,没必要再定义一遍。其中,父类的一个函数为爱好,父亲的爱好是运动,而儿子的爱好是打游戏,那么,这个函数就不适用于儿子了,将父亲的爱好函数habit()定义为虚函数virtual habit(),这样,在子类中就可以重新定义这个函数了。
举个例子:
#include<iostream>using namespace std;class father{public:class birth{public:int year;int month;void printbirth(){printf("birth\n");}};void eat(){printf("eat\n");}virtual void habit(){printf("sport\n");}birth mybirth;};class son : public father{public:void foo(){printf("3\n");}void habit(){printf("games\n");}};int main(void){father a;son b;father *p = &a;p->eat();p->habit();p->mybirth.printbirth();p = &b;p->eat();p->habit();return 0;}
父类指针p动态调用了habit()函数。
存放虚函数指针的地方是虚表,对于一般继承和多重继承的情况派生类是怎么覆盖掉父类中虚函数的,看这篇文章,我觉得写的很清楚。http://blog.csdn.net/wswifth/article/details/5741687
0 0
- C++的继承,多态和组合
- c++_3: 继承和组合
- Notes: Java的访问权限、组合/继承和多态
- 继承和组合的比较
- 继承和组合的比较
- 组合和继承的选择
- 继承和组合的区别
- 组合和继承的关系
- 接口的组合和继承
- java的组合和继承
- 继承和组合的分析
- 类的继承和组合
- 类的继承和组合
- 类的组合和继承
- java的组合和继承
- java的继承和组合
- 继承和组合的区别
- 类的继承和组合
- VMware虚拟机网络配置的三种模式
- 一个使用kindle近3年的菜鸟的几点建议
- String与StringBuffer的区别
- Swift-switch--与 OC 中的比较学习
- 简单的独立按键控制继电器
- C++的继承,多态和组合
- Fragment中加载ListView问题
- JVM --结构与运行
- HDU1040
- iptables中state模块的连接状态(下)
- 使用嗅探器--httplook,分析web调用流程
- Leetcode001:twoSum的Java解法
- C#如何弹出输入框
- java设计模式_解释器模式