1. 程式人生 > >C++隱式型別轉換 operator

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