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

本文演示了如何在 C++ 中使用静态成员变量及静态成员函数,并通过指针调用这些成员。同时展示了普通成员函数与静态成员函数的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * 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 ;
}
 欢迎大家进行讨论...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值