关于类的成员函数数组

    C++类的成员函数数组声明与使用与普通的函数数组稍有不同:

首先谈谈声明

    1.数组声明:int    Fun[MAX_LEN];//包含MAX_LEN个int类型元素的int型数组   

    2.指针数组:int   *Fun[MAX_LEN];//函数名其实为函数的入口地址,可以理解为指向函数所占用内存的指针,所以数组需声明为指针数组

    3.函数数组:int    (*Fun[MAX_LEN])(int, int);//函数指针数组,与普通函数指针数组相同

    4.成员函数数组:int (ClassName::*Fun[MAX_LEN])(int, int);//ClassName为类名,声明类的成员函数指针数组必须在此加上作用域限定符,不然编译时会报出一堆如:”无法从int (__thiscall ClassName::*)(int, int)转换为int (__cdecl *)(int, int)”的错误

 

现在声明就完成了。再说说使用

    一般在类的构造函数中将对数组进行初始化,初始化只要注意一点就可以了。如在ClassName类中有成员函数int Add(int, int); 现将此函数放入数组中须照此:Fun[0] = &ClassName::Add;  如此处不添加作用域限定符编译将会给出如:“绑定成员函数表达式上的非法操作”的错误。

    调用:调用函数数组时须加上this-> 如 int sum = (this->*Fun[0])(2, 3);不然编译会报出如:“..操作数非法”“项不会计算为接受2个参数的函数”等错误。

转载于:https://www.cnblogs.com/mymeng_feng/archive/2011/01/18/1938148.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值