C++隐式类型转换 operator

本文探讨了在Win32SDK和MFC中使用GetClientRect函数获取窗口客户区坐标的细节。通过源代码解析了CRect类型如何通过重载LPRECT实现无需显式类型转换即可使用的技巧。
在Win32 SDK, 该API函数原型为
BOOL GetClientRect(
HWND hWnd, // 窗口句柄
LPRECT lpRect // 客户区坐标
);
在MFC中,该函数的原型为void GetClientRect(LPRECT lpRect) const;
实际应用时,我发现有人用
CRect rectT;
GetClientRect(rectT);
也可以用GetClientRect(&rectT);
为什么参数类型要求是LPRECT,而传入的参数类型不需要转换乘地址呢?
我想在使用rect的时候,应该发生了类型转换。翻开源代码
ATLTYPES_INLINE CRect::operator LPRECT() throw()
{ return this; }
原来在进行类型转换时,crect重载了符号LPRECT,直接返回crect的地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值