c++怎样通过函数指针调用成员函数
类的成员函数地址可以取出来,但是不能通过取出来的指针去调用成员函数,成员函数是public的把函数指针的定义放到类里面也没用...
类的成员函数地址可以取出来,但是不能通过取出来的指针去调用成员函数,成员函数是public的
把函数指针的定义放到类里面也没用 展开
把函数指针的定义放到类里面也没用 展开
1个回答
2016-09-06 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
函数存放在内存的代码区域内,它们同样有地址.如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。
1、函数指针的定义方式:data_types (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);
例如: int (*fp)(int a); //这里就定义了一个指向函数(这个函数参数仅仅为一个int类型,函数返回值是int类型)的指针fp。
例子:
int test(int a)
{
return a;
}
int main(int argc, const char * argv[])
{
int (*fp)(int a);
fp = test;
cout<<fp(2)<<endl;
return 0;
}
注意,函数指针所指向的函数一定要保持函数的返回值类型,函数参数个数,类型一致。
1、函数指针的定义方式:data_types (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);
例如: int (*fp)(int a); //这里就定义了一个指向函数(这个函数参数仅仅为一个int类型,函数返回值是int类型)的指针fp。
例子:
int test(int a)
{
return a;
}
int main(int argc, const char * argv[])
{
int (*fp)(int a);
fp = test;
cout<<fp(2)<<endl;
return 0;
}
注意,函数指针所指向的函数一定要保持函数的返回值类型,函数参数个数,类型一致。
追问
我这里函数是类的成员函数,不是普通函数,普通函数是可以的。
这里的问题是对象在调用成员函数的时候系统会隐藏的传入一个this指针,所以成员函数看似有2个参数其实是3个参数,但是如何给指向成员函数的指针显式的传入this指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询