C++成员函数指针

参考《Effective C++》P173;

   

class A{

public:

void f(){

cout << "f()" << endl;

}

   

void f(int i){

cout << "f(int)" << endl;

}

};

   

int main() {

void (A::*pf)() = &A::f;

A a;

(a.*pf)();

return 0;

}

class A{

public:

void f(){

cout << "f()" << endl;

}

   

void f(int i){

cout << "f(int)" << endl;

}

};

   

int main() {

void (A::*pf)(int i) = &A::f;

A a;

(a.*pf)(3);

        return 0;

}

   

#include<iostream>

   

using namespace std;

   

class Test{

public:

void f(){

cout << "hello, world" << endl;

}

static void sf(){

cout << "hello, world" << endl;

}

};

   

int main(){

void (Test::*pf)() = &Test::f;

(Test().*pf)();

   

void (*spf)() = &Test::sf; // Test::sf also works

spf();

return 0;

}

   

注意,取非静态方法的函数地址必须使用&,否则

   

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值