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

猜你喜欢

转载自blog.csdn.net/missmecn/article/details/8532736
今日推荐