好象一定得point.x=0;
            point.y=0;
 这样赋值 
  有没有方法一句代码就可以给这个变量赋初始值的?

解决方案 »

  1.   

    同意两位楼上,
    这样调用实际上就是调用了CPoint的构造函数来初始化
      

  2.   

    CPoint point=(0,0);
    好像没有错吧。
    首先创建一个临时变量,用(0,0)来初始化它,并且把它的值赋给point,然后这个临时变量析构。从语法上讲,完全正确。
      

  3.   

    point=(100,100); 这样的句子只能给point.x赋值。
      现在我把point作为静态变量,要在一个CPP文件中初始化:
      CPoint CXXX::point=(-100,-100);
      但point.y 并不是100
      

  4.   

    CPoint point = CPoint(0, 0);
      

  5.   

    CPoint point = CPoint(0, 0);
      

  6.   

    小弟来说一下:
    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等于多少。
      

  7.   

    我刚才又重新试了一下,发现上面的理解还是不对:
    我查了源文件,CPoint的确没有重载=,它是通过构造函数
    CPoint(DWORD dwPoint);
    来实现的。比如:
    CPoint p;
    p=0x00010011;
    系统首先生成一个临时对象,使用该构造函数对0x00010011初始化。然后使用系统默认的操作符=,将两个对象进行赋值。