zoukankan      html  css  js  c++  java
  • 关于类的成员函数数组

        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个参数的函数”等错误。

  • 相关阅读:
    Node.js:工具模块
    Node.js:GET/POST请求
    shell之任务控制
    java实现杨辉三角系数
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现文件管理
  • 原文地址:https://www.cnblogs.com/mymeng_feng/p/1938148.html
Copyright © 2011-2022 走看看