下面代碼可以編譯通過,從代碼中可以看出只要重載了指定對象的指針操作符重載時,編譯器會自動轉成父類指針類型
class OverLoadObjABase
{
public:
int x;
};
class OverLoadObjA: public OverLoadObjABase
{
};
class OverLoadObjB
{
public:
__INLINE__ operator OverLoadObjA*() const
{
return (OverLoadObjA*)this;
}
};
void CalcOverload(OverLoadObjABase* pA)
{
pA->x ++; //非法
}
// test * overload
int _tmain(int argc, _TCHAR* argv[])
{
OverLoadObjB objB;
CalcOverload(objB);
getchar();
return 0;
}