利用指向类成员函数的指针数组,实现更加隐蔽的接口

来源:互联网 发布:中国 菲律宾 知乎 编辑:程序博客网 时间:2024/06/05 20:53

利用指向类成员函数的指针数组,实现更加隐蔽的接口

#include "stdafx.h"#include <iostream>using namespace std;class Widget{public:Widget(){//对函数指针数组进行初始化 一定要加Widget::fptr[0] = &Widget::f;fptr[1] = &Widget::g;fptr[2] = &Widget::h;fptr[3] = &Widget::i;}void select(int i, int val){(this->*fptr[i])(val); //this-> 一定不能省略 因为指向类成员的指针在被调用的时候 //必须用一个对象去调用}int count(){return cnt;}private:void f(int val) { cout << "void f(int val)" << val << endl; }void g(int val) { cout << "void g(int val)" << val << endl; }void h(int val) { cout << "void h(int val)" << val << endl; }void i(int val) { cout << "void i(int val)" << val << endl; }enum{ cnt = 4 }; //运用到常量时用枚举类型 可以不用定义名字void(Widget::*fptr[cnt])(int);  //定义指向类成员函数的指针数组//因为四个成员函数有很多的共同点 //而指向类成员的指针类型可以包含这些共同点//所以用这种类型的指针数组来存放函数 实现更加隐蔽的调用};int _tmain(int argc, _TCHAR* argv[]){Widget w;for (int i = 0; i < w.count(); i++){w.select(i, 23);}return 0;}


原创粉丝点击