指向成员的指针
1、从封装的角度看,类可认为是一个命名空间,名称就是类名。类中有两个成员:字段和方法。
2、指针可以指向任何对象,当然也可以指向类中的字段和方法。那么该如何指向类中的字段和方法呢?
3、分别是:
int Animal::*pData = &Animal::_age;
int (Animal::*pFun)() = &Animal::getAge;
4、我们定义指向类中字段或者方法的指针,往往是为了通过指针和对象绑定一起,去修改字段或者访问方法,这种情况下,我们不需要直到类的字段名或者方法名。该怎么做呢?
既然是指向字段或者方法的指针,通过*解引用,就得到了字段或者指针。对于对象使用.*,对于指针使用->*。需要注意的是,.*是在一起的,不能使用括号分开,对于->*也是一样的道理。
1 int Animal::*pData; 2 pData = &Animal::_age; 3 4 int (Animal::*pFun)() = &Animal::getAge; 5 6 Animal a; 7 a.*pData = 9; 8 cout<<(a.*pFun)()<<endl; 9 10 Animal *b = new Animal; 11 b->*pData = 8; 12 cout<<(b->*pFun)()<<endl;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理