函数指针

一、函数指针的使用

float MyFunc(int x,char* p)

{

     cout<<p<<endl;

     return x;

}

typedef float (*my_func_ptr)(int,char*);

my_func_ptr Func;

Func = &MyFunc; //Func = MyFunc;也可以

(*Func)(1, "hello");

 

    

二、成员函数指针(Member Function Pointer

class SomeClass

{

public:

     float Some_Member(int x,char* p)

     {

         cout<<p<<endl;

         return x;

     }

};

typedef float (SomeClass::*my_member_ptr)(int,char*);

my_member_ptr Func;

Func = &SomeClass::Some_Member; 

 

SomeClass someclass;

(someclass.*Func)(2,"hello");

 

SomeClass* pclass = new SomeClass;

Func = &SomeClass::Some_Member;

(pclass->*Func)(3,"hello");

 

三、带单继承的成员函数指针

class SomeClass {

public:

     virtual void some_member_func(int x, char *p) {

         printf("In SomeClass"); };

};

 

class DerivedClass : public SomeClass {

public:

     // If you uncomment the next line, the code at line (*) will fail!

     //    virtual void some_member_func(int x, char *p) { printf("In DerivedClass"); };

};

 

int main() {

     // Declare a member function pointer for SomeClass

     typedef void (SomeClass::*SomeClassMFP)(int, char *);

     SomeClassMFP my_memfunc_ptr;

     my_memfunc_ptr = &DerivedClass::some_member_func; // ---- line (*)

}

四、带多继承的成员函数指针

五、委托(delegate

使用委托可以很容易地实现一个Subject/Observer设计模式的改进版。Observer(观察者)模式显然在GUI中有很多的应用,但我发现它对应用程序核心的设计也有很大的作用。委托也可用来实现策略(Strategy)和状态(State)模式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值