函数指针实现多态
来源:互联网 发布:iphone6s蜂窝移动数据 编辑:程序博客网 时间:2024/06/05 20:05
#include<iostream>using namespace std;class CFather;//前向声明typedef void (CFather::*PFUN_FATHER)();//定义一个 父类成员函数指针class CFather{ public: PFUN_FATHER *v_ptr;//指向表的指针 static PFUN_FATHER v_table[];//虚函数列表 在创建对象前就存在 为静态 public : CFather():v_ptr(CFather::v_table)//构造函数 给指针赋值 只想自己的表 { } public : void AA()//virtual { cout<<"CFather::AA"<<endl; } void BB()//virtual { cout<<"CFather::BB"<<endl; } void CC()//virtual { cout<<"CFather::CC"<<endl; }};PFUN_FATHER CFather::v_table[]={&CFather::AA,&CFather::BB,&CFather::CC};//静态函数在类外初始化 class CSon:public CFather//公有继承{ public : static PFUN_FATHER v_table[];//CSon 要有自己的 虚函数列表 public: CSon() { v_ptr=CSon::v_table;//构造函数 指针赋值 只想自己的表 } public: void AA()//virtual { cout<<"CSon::AA"<<endl; } void BB()//virtual { cout<<"CSon::BB"<<endl; } void DD()//virtual { cout<<"CSon::DD"<<endl; }};PFUN_FATHER CSon::v_table[]={(PFUN_FATHER)&CSon::AA,(PFUN_FATHER)&CSon::BB,(PFUN_FATHER)&CFather::CC,(PFUN_FATHER)&CSon::DD};//注意要将子类函数要覆盖的 进行 强制类型转换 否则无法用父类指针调用函数 // 父类的虚函数要继承下来 void main(){ CFather *fa=new CSon;//定义对象 指针指向表 (fa->*(fa->v_ptr[2]))();// 使用成员函数 要用对象 调用成员函数指针 CFather fb; (fb.*(fb.v_ptr[2]))(); system("pause");}
0 0
- 函数指针实现多态
- 函数指针实现的多态
- 用函数指针表实现多态
- C 语言实现多态的原理:函数指针
- 函数指针实现类似多态的特性
- 函数指针实现注意事项
- 指针实现strlen函数
- 虚函数-虚表-虚指针-多态性-如何实现多态-纯虚函数-抽象类-转
- 虚函数-虚表-虚指针-多态性-如何实现多态-纯虚函数-抽象类
- [linux,c++] 使用指针函数实现多个函数调用
- 函数指针实现 switch功能
- 万能函数指针的实现
- 指针实现函数返回多个值
- 函数指针实现接口固化
- 用基类指针实现多态
- C++中为什么要用虚函数、指针或引用才能实现多态?
- C++中为什么要用虚函数、指针或引用才能实现多态?
- 为什么要使用虚函数和 指针(或是引用)才能实现多态?
- 2015年03月20日 算法第一天札记
- 界面劫持与反界面劫持
- hdu 5183 Negative and Positive (前缀和加强版,强数据。。)
- 界面劫持与反界面劫持
- Swift Core Data 图片存储与读取Demo
- 函数指针实现多态
- 如何在ubuntu 配置java环境
- Windows 中python的Pybluez模块安装
- 输入10个数,要求输出其中值最大的元素和该数是第几个
- linux的安装
- POJ 1088 滑雪 (二维最长上升子序列)
- xml-rpc是个什么东东?
- POJ 3090 Visible Lattice Points 布雷级数
- Cookie和Session