虚函数的多态实现小解
来源:互联网 发布:chromebook ubuntu 编辑:程序博客网 时间:2024/06/05 11:29
要做批注的只有一点,虚表在这几个类中是共享的,并不是每一个类都生成一份自己的虚表。解析是,子类中覆盖的父类中的虚函数,在虚表中是替代了父类那个虚函数的位置,根据向上规则,就实现了多态。
#include<iostream>using namespace std;class base {public: virtual void print() { cout << "base::print()" << endl; } virtual void goo() { cout << "base::goo()" << endl; }};class devired :public base {public: virtual void print() { cout << "devired::print()" << endl; } virtual void go() { cout << "devired::go()" << endl; }};int main(void) { devired b; typedef void(*Fun)(void); Fun pfun = NULL; for (int i = 0; i < 3; i++) { pfun = (Fun)*((int*)*(int*)(&b)+i); pfun(); } system("pause");}
#include<iostream>using namespace std;class point {public: virtual ~point() { cout << "~point()" << endl; } virtual point& mult(float) = 0; float x()const { return _x; } virtual float y()const { return 0; } virtual float z()const { return 0; }protected: point(float x = 0.0) {}; float _x;};class point2 :public point {protected: float _y;public: point2(float x = 0.0, float y = 0.0):point(x),_y(y){} ~point2() { cout << "~point2()" << endl; } point2& mult(float); float y()const { return _y; }};class point3 :public point2 {protected: float _z;public: point3(float x=0.0,float y=0.0,float z=0.0):point2(x,y),_z(z){} ~point3() { cout << "~point3()" << endl; } point3&mult(float); float z()const { return _z; }};void main(void) {}
阅读全文
0 0
- 虚函数的多态实现小解
- C++之虚函数小解
- 小解Smarty模板的实现原理
- Oracle 函数小解
- MessageBox.Show()函数小解
- activation函数小解
- SELinux 的配置小解
- Git的Patch 小解
- Git的Patch 小解
- CAAnimation子类的小解
- static的关键字的小解
- Mybatis的别名的小解
- 第三方(MagicLibrary.dll)的基于.NET的停靠栏的实现小解
- 多态的实现 虚函数表
- 关于java的环境变量小解
- SDK,API,dll的小解
- 比较精辟的PVLAN小解
- 小解C++的句柄类
- Maven中配置文件pom.xml 详细介绍
- 内核proc文件系统简介
- Oracle数据库各版本区别+字符集+OSDBA组+全局数据库名+管理(SYS)口令
- Mysql| distinct去除重复的结果(DISTINCT)
- 妈蛋。一下午就在腾讯云弄Nginx的配置,垃圾ubuntu
- 虚函数的多态实现小解
- 01背包、完全背包、最长上升子序列
- lodash
- HDU2003 求绝对值【入门】
- innerHTML和outerHTML的区别,jQuery删除节点的方法
- 并查集算法
- 当你的算法之路达到了瓶颈,what should I do?
- 笨办法学python习题18 命名、变量、代码和函数
- 刘明春总结2011.11.12 连续第十四天