c++关于typedef

[复制链接]
查看11 | 回复3 | 2009-3-23 19:27:11 | 显示全部楼层 |阅读模式
#include
class MyClass
{
private:
int m_Number;
int Add(int i)
{
return m_Number +=i;
}
int Sub(int i)
{
return m_Number -=i;
}
int Mul(int i)
{
return m_Number*=i;
}
/********found********/
typedef int (MyClass::*FUN)(int);
/********found********/
FUN fun[3];
public:
MyClass()
{
fun[0] = MyClass::Add;
fun[1] = MyClass::Sub;
fun[2] = MyClass::Mul;
m_Number = 0;
}
int CallFun(int i,int j)
{
/********found********/
return (this->*fun)(j);
}
};
void main()
{
MyClass obj;
cout<<obj.CallFun(0,5)<<endl;
cout<<obj.CallFun(1,2)<<endl;
cout<<obj.CallFun(2,3)<<endl;
}
谁能给我解释一下/********found********/
typedef int (MyClass::*FUN)(int);
把int定义成什么了?

回复

使用道具 举报

千问 | 2009-3-23 19:27:11 | 显示全部楼层
typedef int (MyClass::*FUN)(int); 这里是定义函数指针,这个函数必须带一个参数,必须返回一个整型值,比如这里有个函数是这样的:int add(int a){a++;return a;}我们定义函数指针变量FUN fun; 下面我们就可以给函数指针变量赋值,fun = add; 这样它就会自动执行add函数体!...
回复

使用道具 举报

千问 | 2009-3-23 19:27:11 | 显示全部楼层
这不是将 int 取别名这是定义一个函数指针这个函数的原型是MyClass::函数名 (int);即它是 MyClass 的成员函数,同时带有一个 int 的形参可以通过 FUN 指向 原型相同 但是名字不同的函数来调用这些函数类似于FUN = 某函数的地址,调用 (*FUN)(30);...
回复

使用道具 举报

千问 | 2009-3-23 19:27:11 | 显示全部楼层
函数指针...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行