注册 登录
编程论坛 C++教室

看VC++技术内幕有一句话不明白,望高手解答!

asd6791868 发布于 2009-08-08 11:09, 747 次点击
CRect left,top,right,bottom
CPoint x,y
CSize cs,cy  

从CPoint对象减去另一个CPoint对象,得到一个CSize对象。

CRect类有涉及CSize和CPoint类的成员函数。例如,TopLeft成员函数返回一个CPoint对象,Size成员函数返回一个CSize对象。从这一点我们可以看出,一个CSize对象是两个CPiont对象的差,而却我imenkeyiyongyigeCPoint对象进行偏移得到CRect对象。
5 回复
#2
xufen3402009-08-08 11:24
操作符重载决定,我查了查msdn,cpoint操作符重载-号有以下操作符重载,可以看出
CSize operator -( POINT point ) const; cpoint-cpoint得到一个CSize对象
 
CPoint operator -( SIZE size ) const; cpoint-csize得到一个Cpoint对象

 
CRect operator -( const RECT* lpRect ) const; 得到一个Cpoint对象CRect对象
 
CPoint operator -( ) const; 取负数
 
#3
asd67918682009-08-08 11:27
从CPoint对象减去另一个CPoint对象,得到一个CSize对象。
这句话不明白为什么得到的是一个CSize对象
#4
xufen3402009-08-08 11:40
在CPOINT中有这样一句CSize operator-(POINT point) const;操作符重载,
看afxwin.h,
class CPoint{
    .....
CSize operator-(POINT point) const;
    .....
}
   

当处理CPOINT对象-CPOINT对象时,就调用operator-函数,返回CSize对象。
#5
xufen3402009-08-08 11:59
定义文件在AFXWIN1.INL中
_AFXWIN_INLINE CSize CPoint::operator-(POINT point) const
    { return CSize(x - point.x, y - point.y); }

没错,返回的就是CSIZE对象。
#6
asd67918682009-08-08 12:16
哦 我明白了
1