CPoint point=(0,0)这样的句子哪里出错了? 好象一定得point.x=0; point.y=0; 这样赋值 有没有方法一句代码就可以给这个变量赋初始值的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同意两位楼上,这样调用实际上就是调用了CPoint的构造函数来初始化 CPoint point=(0,0);好像没有错吧。首先创建一个临时变量,用(0,0)来初始化它,并且把它的值赋给point,然后这个临时变量析构。从语法上讲,完全正确。 point=(100,100); 这样的句子只能给point.x赋值。 现在我把point作为静态变量,要在一个CPP文件中初始化: CPoint CXXX::point=(-100,-100); 但point.y 并不是100 CPoint point = CPoint(0, 0); CPoint point = CPoint(0, 0); 小弟来说一下:CPoint重载了=,但是在MSDN中没有,不知道为什么。CPoint允许使用一个DWORD类型的变量来对它进行初始化,如下: CPoint p; p=0x00010011;这样,p.x=LOWORD(0x00010001)=1,p.y=HIWORD(0x00010011)=17而这样CPoint p=(0,0),是可以对p的x、y进行初始化为0,但是应该这样来理解:(0,0)是一个逗号表达式,整个表达式的值为最右边的一个值的值。所以(0,0)实际上等于0。然后编译器将0变成一个DWORD型的变量,然后通过CPoint重载的=赋值给p。你可以做做下面这个试验,就可以清楚的了解里面的机制了: CPoint p; p=(0,0x00010011);看看执行以后,p的x、y等于多少。 我刚才又重新试了一下,发现上面的理解还是不对:我查了源文件,CPoint的确没有重载=,它是通过构造函数 CPoint(DWORD dwPoint);来实现的。比如: CPoint p; p=0x00010011;系统首先生成一个临时对象,使用该构造函数对0x00010011初始化。然后使用系统默认的操作符=,将两个对象进行赋值。 线程里使用静态变量会导致程序崩溃吗 VS2010 ToolBar无法添加按钮 图像截取 填涂api 本人新建的一个vc技术的群,群号:5497193 如何编写WINDOWS后台服务??我现在还没有概念,会得只有VC和VB。 spi网络数据拦截 请教我想做这个如何实现,100分!!!!!!!! 各位大哥小弟有问题。500分请教两个作业问题,绝不失言,我只有500分了。在此谢谢大家了。 GDI 泄漏 如何合并两个程序? 为什么我用(F11)单步跟踪的时候,总是要我指出PRINTF.C的路径啊?
这样调用实际上就是调用了CPoint的构造函数来初始化
好像没有错吧。
首先创建一个临时变量,用(0,0)来初始化它,并且把它的值赋给point,然后这个临时变量析构。从语法上讲,完全正确。
现在我把point作为静态变量,要在一个CPP文件中初始化:
CPoint CXXX::point=(-100,-100);
但point.y 并不是100
CPoint重载了=,但是在MSDN中没有,不知道为什么。
CPoint允许使用一个DWORD类型的变量来对它进行初始化,如下:
CPoint p;
p=0x00010011;
这样,p.x=LOWORD(0x00010001)=1,p.y=HIWORD(0x00010011)=17
而这样CPoint p=(0,0),是可以对p的x、y进行初始化为0,但是应该这样来理解:(0,0)是一个逗号表达式,整个表达式的值为最右边的一个值的值。所以(0,0)实际上等于0。然后编译器将0变成一个DWORD型的变量,然后通过CPoint重载的=赋值给p。
你可以做做下面这个试验,就可以清楚的了解里面的机制了:
CPoint p;
p=(0,0x00010011);
看看执行以后,p的x、y等于多少。
我查了源文件,CPoint的确没有重载=,它是通过构造函数
CPoint(DWORD dwPoint);
来实现的。比如:
CPoint p;
p=0x00010011;
系统首先生成一个临时对象,使用该构造函数对0x00010011初始化。然后使用系统默认的操作符=,将两个对象进行赋值。