C++多态
2016-05-14 09:54
253 查看
测试代码,理解C++的多态。
1、多态的实现机制,虚函数;
2、多态实现的三要素:1)继承,2)重写,3)虚函数
理解:
在C++中,多态的应用是很强大的,也是面试中必问的话题,所以在这里我想根据自己的理解总结一下:
在C++中要实现多态,以上的三要素必须满足,必要有父子类之间的继承关系,而且父类的函数必须是虚函数,在子类中必须重写父类的方法。例如下面的示例代码。
输出结果:
可以看出,当我们定义基类的指针指向不同的对象时,函数的输出结果是不一样的这就是多态的强大之处,也就是说,我们定义同一个接口(函数),在不同的子类中去重写它,此时我们的接口函数就会是动态调用的。
1、多态的实现机制,虚函数;
2、多态实现的三要素:1)继承,2)重写,3)虚函数
理解:
在C++中,多态的应用是很强大的,也是面试中必问的话题,所以在这里我想根据自己的理解总结一下:
在C++中要实现多态,以上的三要素必须满足,必要有父子类之间的继承关系,而且父类的函数必须是虚函数,在子类中必须重写父类的方法。例如下面的示例代码。
#include <iostream> using namespace std; class A { public: //A(){cout << "this A\n";} //~A(){cout << "this ~A\n";} //A(const A&){cout << "this &A\n";} virtual void print(){cout << "this A\n";} }; class B:public A { public: //B(){cout << "this B\n";} //~B(){cout << "this ~B\n";} //B(const B&){cout << "this &B\n";} virtual void print(){cout << "this B\n";} }; /*这是测试函数,参数是指向基类的指针*/ void test(A *p) { p->print(); } int main(void) { A aa;//创建基类对象 B bb;//创建子类对象 test(&aa);//调用测试函数 cout << "------------------\n"; test(&bb);//调用测试函数 }
输出结果:
tsong@tsong:~/exc$ ./a.out this A ------------------ this B tsong@tsong:~/exc$
可以看出,当我们定义基类的指针指向不同的对象时,函数的输出结果是不一样的这就是多态的强大之处,也就是说,我们定义同一个接口(函数),在不同的子类中去重写它,此时我们的接口函数就会是动态调用的。
相关文章推荐
- c++ 内存申请释放,构造函数,析构函数,执行顺序
- C/C++ 堆与栈的区别
- HDU 2602-Bone Collector(01背包-一/二维)
- [C++]内存管理器--谈论如何自定义内存分配机制
- 成为C++高手之最终版计算器
- C++中关于set的自定义排序函数的书写
- 【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)
- C++实现迷宫问题
- 汉诺塔问题
- 历届蓝桥杯C/C++决赛试题
- c++ primer(第五版)学习笔记及习题答案代码版(第七章)类
- 指针综合篇(转载)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 方块填数(编程大题)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 DNA比对(编程大题)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 拼音字母(编程大题)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 数据压缩(代码填空)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 星期几(结果填空)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛
- 2015年第六届蓝桥杯C/C++程序设计本科B组决赛
- 二叉树的性质以及二叉树的遍历(非递归)(c语言)(一)