C++隐式类型转换 operator

在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的地址。

猜你喜欢

转载自blog.csdn.net/qq_24127015/article/details/48029017
今日推荐