CPP学习之——成员函数指针数组(17.10)

一 概述

假如我们将许多成员函数指针放在一个数组中,那么这个数组就叫成员函数指针数组。该数组中的成员函数指针可以通过数组的下标来进行调用,并且可以用成员函数的内存地址来对数组的各个成员函数指针进行初始化。

二 示例演示及结果输出

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<stdlib.h>
using namespace std;

class Paper
{
public:
void read(){cout<<"纸上面的字可以读"<<endl;}
void write(){cout<<"纸上面的字可以写"<<endl;}
void burn(){cout<<"纸上面的字可以点火"<<endl;}
};
typedef void (Paper::*p)();
int main()
{

p func[3]={&Paper::read,&Paper::write,&Paper::burn};
Paper *pp=0;
char choice[1];
bool quit=false;
while(quit==false)
{
cout<<"(0)退出(1)读(2)写(3)点火:";
cin>>choice[0];
if(choice[0]>'3'||choice[0]<'0')
{
cout<<"请输入从0到3之间的数组"<<endl;
}else if(choice[0]=='0')
{
quit=true;
}else{
int n;
pp=new Paper;
n=atoi(choice);
(pp->*func[n-1])();
delete pp;
}
}
return 0;
}

2.2 输出结果

1
2
3
4
5
6
7
(0)退出(1)读(2)写(3)点火:1
纸上面的字可以读
(0)退出(1)读(2)写(3)点火:2
纸上面的字可以写
(0)退出(1)读(2)写(3)点火:3
纸上面的字可以点火
(0)退出(1)读(2)写(3)点火:

三 补充

3.1 atoi 函数

  • atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数