下面代码可以编译通过,从代码中可以看出只要重载了指定对象的指针操作符重载时,编译器会自动转成父类指针类型
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;
}