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++中孙鑫老师《深入详解》的一个小代码?
展开
 我来答
goodczs
2014-11-10 · TA获得超过2118个赞
知道小有建树答主
回答量:2251
采纳率:0%
帮助的人:942万
展开全部
微软就是这么规定的,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指针。
追问
第一个问题我懂了,可是第二个问题麻烦你能再详细解释一下吗?
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.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式