关于CPoint的初始化与赋值
来源:互联网 发布:有名的数据统计网 编辑:程序博客网 时间:2024/06/07 02:11
对于CPoint变量一般都是在声明处定义,
CPoint pcenter(200,200);
今天突然遇到一个很具有迷惑性的现象:
头文件(.h)中声明:
CPoint pcenter;
源文件中(.cpp)定义:
pcenter = (200,200);
然后debug发现,这条语句执行之后,
pcenter.x = 200;pcenter.y = 0;
其实仔细想来这个bug是我们自己的疏忽造成的,(200,200)本身是一个逗号表达式,表达式的值是200,而不是我们预期的CPoint(200,200)。
其实对于pcenter = (200,200);这条语句,调用了Cpoint的如下赋值函数
_AFXWIN_INLINE CPoint::CPoint(DWORD dwPoint){x = (short)LOWORD(dwPoint);y = (short)HIWORD(dwPoint);}
CPoint并没有重载=,它是通过构造函数上述CPoint(DWORD dwPoint);来实现的。
系统首先生成一个临时对象,使用该构造函数对200(0x000000c8)初始化,得到临时CPoint(0x000000c8,0x00000000)。然后使用系统默认的操作符=,将两个对象进行赋值。最后释放临时对象。
0 0
- 关于CPoint的初始化与赋值
- 关于全局变量初始化与赋值问题的思考
- Java的赋值与初始化
- 初始化与赋值的区别
- 初始化与赋值的区别
- 初始化与赋值的区别
- 初始化与赋值的区别
- 关于WTL的CString, CRect, CSize, CPoint
- 关于类的初始化和赋值
- 关于对象初始化和赋值的探讨
- 初始化与赋值是不同的操作
- delphi 全局变量的定义与初始化赋值
- 初始化与赋值的一些总结
- C++类的成员初始化 与 赋值
- C++初始化与赋值的区别
- C指针的初始化与赋值
- 数组初始化与赋值注意的问题
- PL/SQL 集合的初始化与赋值
- Vivado开发工具熟悉之IP Intergrator(Generate Block Design)
- 【poj 3056】The Bavarian Beer Party (区间DP+最大匹配不交叉的简单算法)
- php文件之间相互引用路径问题的一般处理方法
- struts集成restful
- Device namespace简介 - 基于Kernel namespace的设备虚拟化
- 关于CPoint的初始化与赋值
- 后缀数组(至少重复k次的可重叠的最长重复子串)—— POJ 3882
- u-boot.lds文件诠释
- Python mysql操作【转】
- 国外程序员整理的 C++ 资源大全
- 带给您灵感的25个最新鲜的 HTML5 网站
- VS2008编译C语言出错
- ALSA编写的音频程序
- VS功能扩展--扩展介绍