C++中指向类成员的指针操作详解
4星 · 超过85%的资源 需积分: 10 2 浏览量
更新于2024-09-15
3
收藏 5KB TXT 举报
本文介绍了C++中关于对象和指针的引用,特别是如何声明和使用指向类的成员(数据成员和成员函数)的指针。在C++中,可以声明指向类的数据成员和成员函数的指针,这允许我们间接访问和操作类的私有和公共成员。文章给出了详细的示例来解释这些概念。
1. **指向数据成员的指针**:
- 格式:`<类型说明符><类名>::*<指针名>`
- 示例:`int A::*pc = &A::c;`,这里的`pc`是一个指向类`A`的私有数据成员`c`的指针。
2. **指向成员函数的指针**:
- 格式:`<类型说明符>(<类名>::*<指针名>)(<参数表>)`
- 示例:`int (A::*pfun)(int) = A::fun;`,这里的`pfun`是一个指向`A`类的成员函数`fun`的指针,接受一个整型参数并返回整型值。
3. **使用指向成员的指针**:
- 调用数据成员:`a.*pc = 8;`,其中`a`是`A`类的对象,`pc`指向成员`c`。
- 调用成员函数:`(*pfun)(5)`,如果`pfun`是一个指向`fun`的指针,`(*pfun)`调用成员函数,`(*pfun)(5)`传入5作为参数。
- 对象指针的调用方式:`p->*pc = 8;`,`p`是`A`类对象的指针,`->*`运算符用来访问指针所指对象的成员。
4. **对象指针和对象引用作为函数参数**:
- 对象指针作为参数:可以实现传址调用,改变调用函数的参数对象的值,但不会拷贝对象,提高效率。
- 示例代码展示了如何用对象指针`M *m2`作为参数,以及如何通过`->*`运算符改变`m2`所指对象的成员。
5. **对象引用作为函数参数**:
- 更常用且更简洁,具有与对象指针相似的优点,但语法更直接。
- 示例代码展示了如何使用对象引用`M &m2`作为参数,`m2`可以直接改变实参对象的值。
6. **this指针**:
- `this`是一个隐含的指针,指向调用当前成员函数的对象。
- 示例中展示了`this`如何用于避免自我赋值,以及如何通过`*this`来引用当前对象。
总结:C++中的对象和指针的引用提供了灵活的方式访问和操作类的成员,包括数据成员和成员函数。使用对象指针和引用作为函数参数可以实现高效的信息传递,而`this`指针则为成员函数提供了访问对象自身的方法。理解这些概念对于深入学习C++类和对象至关重要。
2020-09-02 上传
2012-03-13 上传
2014-10-18 上传
2013-05-12 上传
2020-08-29 上传
2008-10-18 上传
conly_love2008
- 粉丝: 0
- 资源: 9
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析