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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章