VC++中孙鑫老师《深入详解》 中有关 构造函数的一个小问题?
在这段代码中CRect(POINTtopLeft,POINTbottomRight);-CRect的构造函数;voidFillRect(LPCRECTlpRect,CBr...
在这段代码中CRect(POINT topLeft,POINT bottomRight);-CRect的构造函数;
void FillRect(LPCRECT lpRect,CBrush *pBrush);-填充矩形的构造函数;
问题:
1、在fillrect的第一个参数时,应该传递的是一个指针,问什么是一个对象呢?
2、一般我们在构造对象时,用的是CRect rect(m_ptOrigin,point);
dc.FillRect(rect,&brush);可是上面的列子是直接用构造函数,这样能构造一个对象吗?
这种写法的原因是什么?
请详细解答,这个有关VC++中孙鑫老师《深入详解》的一个小代码? 展开
void FillRect(LPCRECT lpRect,CBrush *pBrush);-填充矩形的构造函数;
问题:
1、在fillrect的第一个参数时,应该传递的是一个指针,问什么是一个对象呢?
2、一般我们在构造对象时,用的是CRect rect(m_ptOrigin,point);
dc.FillRect(rect,&brush);可是上面的列子是直接用构造函数,这样能构造一个对象吗?
这种写法的原因是什么?
请详细解答,这个有关VC++中孙鑫老师《深入详解》的一个小代码? 展开
1个回答
展开全部
微软就是这么规定的,MSDN上面写的很清楚
lpRect
Points to a RECT structure
that contains the logical coordinates of the rectangle to be filled. You can
also pass a CRect object for this parameter.
其实你两个问题最终都归根于this指针,类构造时会传入this指针,这里面参数也好,直接申明也好,都是用这个this指针。
lpRect
Points to a RECT structure
that contains the logical coordinates of the rectangle to be filled. You can
also pass a CRect object for this parameter.
其实你两个问题最终都归根于this指针,类构造时会传入this指针,这里面参数也好,直接申明也好,都是用这个this指针。
追问
第一个问题我懂了,可是第二个问题麻烦你能再详细解释一下吗?
1、这中写法跟this指针有什么关系?难道说以后我可以不用声明对象(CRect rect;)就能直接用构造函数来返回对象吗,以后再需要对象的参数问题上,是不是可以直接用构造函数,不用声明对象就行了呢?
2、构造函数是没有返回值的,调用构造函数是不是说就返回一个对象呢?
追答
内部实现机制是this指针的功劳。
不过你能不能别钻这种牛角尖,规定这么用就这么用,那申请变量为什么是int value 为什么不是abc value?
你没下载msdn还是怎么一回事? 上面说的很明白。
The CRect( const RECT& ) and CRect( LPCRECT )
constructors perform a CopyRect. The
other constructors initialize the member variables of the object directly.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询