c++ 中指向函数的指针初始化和使用
对指针的声明没问题,问题处在声明后的使用。众所周知,函数指针分为两类1.普通函数指针声明:voidf(){};void(*p)(){};请问,对p赋值时正确的是:A:p=...
对指针的声明没问题,问题处在声明后的使用。
众所周知,函数指针分为两类
1.普通函数指针
声明:void f( ) { };
void (*p)( ) { };
请问,对p赋值时正确的是:
A: p=f
B: p=&f
使用指针函数正确的是:
C: p( );
D: (*P)( );
PS:我自己编译运行过,两种方式都正确,请问这是什么原因?
2.成员函数指针
声明: void Time::f( ) { }
void (Time::*p)( ) { }
请问赋值时正确的是:
E: p=Time::f
F: p=&Time::f;
使用指针函数时正确的是:
G (t.p)( )
H (t.*p)( )
题目很长,谢谢各位帮我解决下这个问题,是两种方式都可以吗?是否有什么区别呢? 展开
众所周知,函数指针分为两类
1.普通函数指针
声明:void f( ) { };
void (*p)( ) { };
请问,对p赋值时正确的是:
A: p=f
B: p=&f
使用指针函数正确的是:
C: p( );
D: (*P)( );
PS:我自己编译运行过,两种方式都正确,请问这是什么原因?
2.成员函数指针
声明: void Time::f( ) { }
void (Time::*p)( ) { }
请问赋值时正确的是:
E: p=Time::f
F: p=&Time::f;
使用指针函数时正确的是:
G (t.p)( )
H (t.*p)( )
题目很长,谢谢各位帮我解决下这个问题,是两种方式都可以吗?是否有什么区别呢? 展开
3个回答
展开全部
C++指向函数的指针定义方式为:
返回类型 (*指针名)(函数参数列表),例如 void (*p)(int)是指向一个返回值为void 参数为int类型的函数。
而若想定义一个指向类成员函数的函数指针该怎么定义呢?对成员函数指针的使用。
(1)非静态成员函数
定义方式:返回类型 (类名::*指针名)(函数参数列表)例如void (A::*p)(int)是一个指向A类中成员函数的函数指针。
赋值方式:p=&A::函数名,而一般的函数指针的赋值是p=函数名即可,注意区别。(成员函数必须是public类型的)
调用方式:成员函数指针的调用必须通过类对象进行调用,a.*p(int)即可调用成员函数(该成员函数是public类型的)
(2)静态成员函数
对于静态成员函数的定义和使用方法都与普通函数指针的相同,只是在赋值的时候和非静态成员们函数指针的赋值方法相同。
因为静态成员函数的指针类型是与普通函数指针类型相同的。
返回类型 (*指针名)(函数参数列表),例如 void (*p)(int)是指向一个返回值为void 参数为int类型的函数。
而若想定义一个指向类成员函数的函数指针该怎么定义呢?对成员函数指针的使用。
(1)非静态成员函数
定义方式:返回类型 (类名::*指针名)(函数参数列表)例如void (A::*p)(int)是一个指向A类中成员函数的函数指针。
赋值方式:p=&A::函数名,而一般的函数指针的赋值是p=函数名即可,注意区别。(成员函数必须是public类型的)
调用方式:成员函数指针的调用必须通过类对象进行调用,a.*p(int)即可调用成员函数(该成员函数是public类型的)
(2)静态成员函数
对于静态成员函数的定义和使用方法都与普通函数指针的相同,只是在赋值的时候和非静态成员们函数指针的赋值方法相同。
因为静态成员函数的指针类型是与普通函数指针类型相同的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
详见:《指针的艺术》
PS:台湾作者写的。你买本看看
PS:台湾作者写的。你买本看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询