1. 程式人生 > >C++ 中指標操作符(*)過載備忘

C++ 中指標操作符(*)過載備忘

下面程式碼可以編譯通過,從程式碼中可以看出只要過載了指定物件的指標操作符過載時,編譯器會自動轉成父類指標型別
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;
}