聊聊C++的多态
来源:互联网 发布:滑窗的方法 数据分析 编辑:程序博客网 时间:2024/06/07 03:39
什么是多态
如果有几个上似而不完全相同的对象,有时人们要求在向它们发出同一个消息 时, 它们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。
例如:武大女神,北大女神,人大女神,她们都有相同属性和行为,她们正分别和男友一起在清华大学的小树林学习.突然她们的男友同时叫:老婆,你快过来..她们会分别走到不同的男友面前.而不是你…
C++中所谓的多态(polymorphism)是指,由继承而产生的相关的不同的类,其对象 对同一消息会作出不同的响应。 多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性。可以减轻 系统 升级,维护,调试的工作量和复杂度.
赋值兼容(多态实现的前提)
赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的 对象来替代。赋值兼容是一种默认行为,不需要任何的显示的转化步骤。
赋值兼容规则中所指的替代包括以下的情况:
︎1.派生类的对象可以赋值给基类对象.
2.派生类的对象可以初始化基类的引用。
3.派生类对象的地址可以赋给指向基类的指针。
在替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继承的成员。
#include <iostream> using namespace std; class Parent { public: Parent(int a) { this-‐>a = a; cout<<"Parent a"<<a<<endl; } void print() //⼦子类的和⽗父类的函数名字⼀一样 { cout<<"Parent 打印 a:"<<a<<endl; } private: int a; }; class Child:publicParent { public: Child(int b) :Parent(10) { this-‐>b=b; cout<<"Child b"<<b<<endl; } void print() { cout<<"Child打印 b:"<<b<<endl; } private: int b; }; void howToPrint(Parent *base) { base-‐>print(); //⼀一种调⽤用语句 有多种表现形态... } void howToPrint2(Parent &base) { base.print(); } int main(void) { Parent*base=NULL; Parent p1(20); Child c1(30); base =&p1; base-‐>print(); //执⾏行⽗父类的打印函数 base= &c1; /* 编译器认为最安全的做法是编译到⽗父类的print函数, 因为⽗父类和⼦子类肯定都有相同的print函数。 */ base-‐>print(); //执⾏行谁的函数 ? //貌似我们希望之星Child的print函数 Parent &base2= p1; base2.print(); //执⾏行⽗父类的打印函数 Parent &base3 = c1; base3.print(); //执⾏行谁的函数? //函数调用 howToPrint(&p1); howToPrint(&c1); howToPrint2(p1); howToPrint2(c1); return 0; }
0 0
- 聊聊C++的多态
- 聊聊我对c/c++的认识
- 聊聊我对c/c++的认识
- 聊聊C/C++要过的桥
- 聊聊C语言的.h文档
- 咱来聊聊java的多态机制?
- 聊聊我对c/c++的认识 [转]
- 体验C#——聊聊方法的那些参数
- 聊聊C语言的预编译指令include
- 聊聊C语言那些堆和栈的道道
- 聊聊ctrl+c和ctrl+z的区别
- 聊聊c语言中的指针
- 聊聊我们的team
- 聊聊Memcached的应用
- 聊聊中国的操作系统
- 聊聊web的底层
- 聊聊R的优势
- 聊聊java的toString
- Leetcode #49. Group Anagrams 变位词组合 解题报告
- 协议类之UART笔记
- 认证(Authentication)与授权(Authorization)
- Mantle的优缺点
- android:screenorientation
- 聊聊C++的多态
- highcharts加载数据库数据(java版)
- MAVEN 多源代码目录配置
- Android自定义View之饼饼图
- 打Log 轻松理解getDimension getDimensionPixelOffset getDimensionPixelSize
- PHP常用函数汇总
- Linux基础11_条件判断及回圈
- Awk使用及网站日志分析
- jGraphX 绘图总结,增加大量节点和边的效率问题。