创建函数指针到 C++ 成员函数

/*
 * Compile options needed: None
 
*/  

#include 
< iostream >
using   namespace  std;

class  Data
{
private :
   
int  y;
   
static   int  x;

public :
   
void  SetData( int  value) {y  =  value;  return ;};
   
int  GetData() { return  y;};
   
static   void  SSetData( int  value) {x  =  value;  return ;};
   
static   int  SGetData() { return  x;};
};

int  Data::x  =   0 ;

void  main( void )
{
   Data mydata, mydata2;

   
//  Initialize pointer.
    void  (Data:: * pmfnP)( int =   & Data::SetData;  //  mydata.SetData;

   
//  Initialize static pointer.
    void  ( * psfnP)( int =   & Data::SSetData;       // 注意:对于静态成员函数,在指针声明中必须省略类名.

   mydata.SetData(
5 );  //  Set initial value for private data.
   cout  <<   " mydata.data =  "   <<  mydata.GetData()  <<  endl;

   (mydata.
* pmfnP)( 20 );  //  Call member function through pointer.
   cout  <<   " mydata.data =  "   <<  mydata.GetData()  <<  endl;

   (mydata2.
* pmfnP)( 10 ) ;  //  Call member function through pointer.
   cout  <<   " mydata2.data =  "   <<  mydata2.GetData()  <<  endl;

   (
* psfnP)( 30 ) ;  //  Call static member function through pointer.
   cout  <<   " static data =  "   <<  Data::SGetData()  <<  endl ;
}
 欢迎大家进行讨论...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值