然后他直接给它初始化m_ptOrigin=0;我去看了看MSDN,但里面没有=操作符重载,为什么可以这样使用呢?
小弟C++学的不是很好,望大家指教.
楼上说的不对,难道是它的类就可以这样用吗?不是的。
在MSDN中可以找到答案
MSDN中描述CPoint的构造函数如下:
CPoint( DWORD dwPoint );
dwPoint:
Sets the x member to the low-order word of dwPoint and the y member to the high-order word of dwPoint.
这句话是说,如果给构造函数一个DWORD类型(32位无符号整型)的值,那么CPoint.x就被设置为dwPoint的低字节序,那么CPoint.y就被设置为dwPoint的高字节序,当然如果是个0,那么他的高低字节序就都是0,因此用m_ptOrigin=0,就是m_ptOrigin.x=0,m_ptOrigin.y=0了。
这里涉及到一个构造函数的问题,有人问m_ptOrigin=0也不是调用构造函数的形式啊?答案是这种调用存在两种情况:
1.初始化时,而且构造函数只有一个参数时。
例如:
class a
{
int x;
a(int i){x=i};
......
}
那么a a1=10就等于a a1(10).显然,这里说的m_ptOrigin=0不是在对象初始化的时候。那么就是下一种情况。
2.在另一个类中定义该类的变量的时候,且在定义类中的构造函数中使用。
这里说的m_ptOrigin变量被定义在了View类中,那么在View类的构造函数中m_ptOrigin=0,这就调用的CPoint的构造函数,进而使m_ptOrigin.x=0,m_ptOrigin.y=0。