专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 编程

函数指针的传接的两种环境(全局函数与类成员函数)

发布时间:2011-07-01 07:31:24 文章来源:www.iduyao.cn 采编人员:星星草
函数指针的传递的两种环境(全局函数与类成员函数)

 

转载请标明是引用于 http://blog.csdn.net/chenyujing1234 

欢迎大家提出意见,一起讨论!

 

最近在代码中看到指针的调用方式,有些疑问,于是在论坛上发了问题

http://topic.csdn.net/u/20120531/15/904ece4c-013a-4df4-8a7f-41cca854f3e0.html?seed=627050603&r=78731714#r_78731714。

现在对这个问题做个总结。

 

1、  函数指针的传递的两种环境(类成员函数)

运行的结果是:

 

 

下面是原代码:


 

对于上面列出的代码,我的问题是:
1、把
  if ( (this->*function)(1) == TRUE )
  改为
  if ( (/*this->*/*function)(1) == TRUE )
  就会报错:
  error C2171: “*”: “CTestFun::function_Second”类型的操作数非法
  error C2064: 项不会计算为接受 1 个参数的函数

2、
  若改为
  if ( (/*this->**/function)(1) == TRUE )
  就会报错:
  error C2064: 项不会计算为接受 1 个参数的函数
  这是为什么呢? 为什么一定要加this.

1、2两个问题是同一个问题。

答:

如果函数实例没有定义成static形式,那么:
     (1)那么函数指针的声明得加类空间名字,以此具有全局属性。
    (2)在函数实例使用者内部得用this->来引用到函数指针
    (3)在函数实例使用者的参数处得使用 CTestFun:来引用函数实例。


3、BOOL function_Second_User(function_Second function)
  中的形参是函数指针而已。
  而调用的时候为什么是
  function_Second_User(&CTestFun::function_Second_Instance); (加了& ,即函数的指针的指针)
4、 void function_One_User(PFunction_One function)
  中的形参是函数的指针的指针,
  而调用时为什么是
  function_One_User((PFunction_One)function_One_Instance);
  只是函数指针?
3、4 其实是同一个问题。

答:

 由于加了CTestFun::来引用类中的函数成员
 所以加上  &。一句话,这是类中的规定。

 

2、  函数指针的传递的两种环境(全局函数)


 

 

 

2楼lidaasky1小时前
顶一个
1楼lvweiren1小时前
感谢分享,我一直找这个,刚测过,很好.!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: