类中成员函数的函数指针定义以及使用

在algorithm算法中经常会碰到传递函数指针的情况,在这里面他们把这种类型叫做谓词,当然lambda表达式就是
谓词的一种。这次内容要说的当类的成员函数做为谓词时,是什么样子的,如何使用呢?
类中一共会有三种函数:
1.非静态非虚函数
非静态非虚函数的函数指针,因为成员函数里面会传递this指针,所以就算是函数指针,也必须有对象来调用他们。
非静态非虚函数的函数指针格式:
返回类型(类名::*指针名)(参数)=类名::&函数名;    //至于最后的函数名前需不需要加&,我认为都可以的。当然,加上更加规范。
使用时:
对于指向类成员函数的函数指针,调用时必须传入一个类对象的this指针,所以必须有类实体调用
格式:
(pa->*指针名)(参数);     pa是指向对象的指针  //同样,指针名前*是不是必要的,去尝试。
(a.*指针名)(参数);           a是一个对象              //同上
2.类中静态成员函数
静态成员函数并不需要this指针,那么它和非静态非虚函数会是相同的调用方式吗?
定义方式:
 返回值(*p)(参数)=&类名::函数名;                                   //和全局函数定义方式一样,赋值方式和非静态非虚函数相同
使用:由于不需要传递this指针,所以使用和全局函数相同
  指针名(参数);

3.虚函数

虚函数呢,它为了运行时多态,所以我们在编译期间根本无法知道调用哪一个函数,更不用说取得地址了。

如果取了虚函数的地址,据说会取到索引值。当然,有兴趣的可以尝试哈。

所以呢,取虚函数的地址是没有意义的。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值