C++重载操作符新发现
来源:互联网 发布:问道手游刷道挂机软件 编辑:程序博客网 时间:2024/06/05 02:42
今天在看MFC源码是碰到这样的形式:
AFX_INLINE operator TYPE*(){ return GetData(); }AFX_INLINE TYPE* operator->(){ return GetData(); }
重载*和->操作符,由于很长时间没看C++ PRIMER,很多东西都已经忘记,顺手拿起旁边的这本宝典。关于这两个操作符的重载,描述的和上面的代码不一致。
自己写了点测试代码来分析一下,结果确实有两种方式:
class Screen{ public: int n; }; class ScreenPtr{ public: ScreenPtr(Screen &src) : ptr(&src) { k = m = 20; } #if 0 Screen& operator *(){ return *ptr; } #else operator Screen*(){ return ptr; } #endif Screen* operator->(){ return ptr; } int k; Screen *ptr; int m; }; void main() { Screen scr; scr.n = 10; ScreenPtr ps(scr); int j = (*ps).n;j = ps->n;Screen *pScr = ps;}
第一种形式:
Screen& operator *(){ return *ptr; }只适应
int j = (*ps).n;这种情况下的调用。
在这样的代码编写方式下就有问题了:
Screen *pScr = ps;
第二种方式更为通用,可以兼容两种情况:
operator Screen*(){ return ptr; }
- C++重载操作符新发现
- C++【操作符重载】
- c++::操作符重载
- C++:操作符重载
- 操作符重载(C++)
- C++-重载操作符<< >> = + - * /
- c++_操作符重载
- C/C++: 操作符重载案例
- C++操作符重载专题(C++)
- 类型转换和操作符重载 (c#)
- C++——操作符重载
- 重载操作符 (c++primer 4e)
- 【C++】 重载操作符类编程
- 自定义数据类型,操作符重载实例[C#]
- C++primer读书笔记8-重载操作符
- C/C++ 之 操作符重载
- [c++]实例-类array,重载操作符
- C++,重载输出操作符<<, cout.operator()
- BOS 给实体的ControllerBean添加扩展类的设置方式
- 用微分方程形式解释卫星轨道变化
- delphix 学习中
- 获取网页的基本流程
- s3c6410使用MFC-API进行MPEG-4格式解码及LCD播放代码注释
- C++重载操作符新发现
- 图片
- [C#]温度监控项目的经验
- Reporting Service技巧(一):表格中奇偶行不同颜色的设置
- 守护进程(Daemon)的编写
- 设置IIS的MIME给服务器添加APK文件下载方式
- linux内核中常用的一些宏及函数
- wince下sources\sources.cmn\Makefile.def的相关作用(转载)
- DataTable转换成JSON字符串的函数