C++进阶 -类中成员和成员函数的动态调用_hawkol_新浪博客

本文通过一个C++示例介绍了如何使用数字成员指针和成员函数指针实现类内的动态调用。示例中定义了一个Transport类,并演示了如何创建不同类型的数据成员和成员函数指针,以及如何通过这些指针来访问类的对象属性和方法。

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

在类中要实现动态调用,需要使用数字成员指针和成员函数指针。
#include
using namespace std;
class Transport
{
public:
Transport(double s,double w)
{
Speed=s;
Weight=w;
}
virtual ~Transport()
{
cout<<"in ~Transport!"<<endl;
}
void Move()
{
cout<<"in moving"<<"\nSpeed="<<Speed<<"\nWeight="<<Weight<<endl;
}
void setSpeed(double s)
{
Speed=s;
}
void setWeight(double w)
{
Weight=w;
}

double Speed;
double Weight;
};
typedef double Transport::*pdouble;//数字成员指针别名
typedef void (Transport::*pSub)(double);//带参成员函数指针别名
typedef void (Transport::*pMove)();//无参成员函数指针别名
void main()
{
Transport t(8.8,9.9);

//数字成员指针指向Speed;
pdouble pd=&Transport::Speed;
printf("pd=%d\n",pd);
cout<<"Speed="<<t.*pd<<endl;

//数字成员指针指向Weight;
pd=&Transport::Weight;
printf("pd=%d\n",pd);
cout<<"Weight="<<t.*pd<<endl;

Transport *pt=&t;

cout<<"调用带参成员函数指针指向setSpeed(double)"<<endl;;
pSub ps=&Transport::setSpeed;
(pt->*ps)(88.88);

cout<<"调用带参成员函数指针指向setWeight(double)"<<endl;;
pSub pw=&Transport::setWeight;
(pt->*pw)(99.99);

cout<<"调用无参成员函数指针指向Move()"<<endl;;
pMove pm=&Transport::Move;
(pt->*pm)();
}
 
图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值