C plus plus 的多态性
来源:互联网 发布:摄像头探测软件 编辑:程序博客网 时间:2024/04/30 04:29
多态之目的
以相同的指令调用不同的函数,这种性质称为Polymorphism,意思是”the ability to assume many forms”(多态)。多态的目的,就是要让处理“基类之对象”的程序代码,能够完全无障碍地继承适当处理“派生类之对象”。
前期绑定与后期绑定(静态绑定与动态绑定)
前期绑定,就是对于C/C++的非虚函数(non-virtual),在编译期就转换为一个固定的地址调用了。后期绑定,就是对C/C++的虚函数(包括纯虚函数),编译器无法在编译期判断“基类之对象”调用的是哪个函数,必须在执行期才能够判断。
虚函数后期绑定的实现(虚函数表)
每一个“内含虚函数的类”,编译器都会为它做一个虚函数表,表中的每一个元素都指向一个虚函数地址(表中虚函数地址,是根据类中虚函数声明的先后次序,来进行排列的)。此外,编译器会为每个类加上一个成员变量,是一个指向该虚函数表的指针(常被称为vptr)。
派生类会继承基类的虚函数表(以及所有其它可以继承的成员),当我们在派生类中改写虚函数时,虚函数表就受到了影响:表中元素所指的函数地址将不再是基类的函数地址,而是派生类的函数地址。
注:本文总结自《MFC深入浅出》
- C plus plus 的多态性
- c plus plus的string函数实现
- c plus plus 复习
- c prime plus的副作用
- c prime plus的笔记
- c plus plus socket 编程
- c plus plus 第一章练习
- C Plus Plus Env Prepare
- C plus plus sprintf用法
- 简约至上 C Plus Plus 的list 容器的学习
- c primer plus 14.13 奇特的声明
- C primer plus:指向函数的指针
- c prime plus 的内存,储存,链接
- 来自<c primer plus >的随记
- C plus plus Concurrency in Action
- 【C Plus Plus】基础篇(一)
- 【C Plus Plus】基础篇(二)
- C Plus Plus in SCIM source code
- VC6使用GDI+的配置方法
- 【读书笔记】《牛小米外企打拼记》
- Beautiful Code
- Qt_Qtopia与Android的进程间通讯方式
- 快速输出System.out.println()
- C plus plus 的多态性
- delphi实现字符串中数字的判断及相应数字累加
- 为网页添加浮动广告
- QListWidget 滚动条设置风格
- 不想做开发了,想测试
- 任意数的排列组合
- 免费手机上网的方法,比GPRS网速快很多(好东西与大家分亨)
- (转)Linux2.6内核epoll 网络编程
- WebService与.NET Remoting的区别及适应场合