现在的位置: 首页 > 综合 > 正文

C++ 中指针操作符(*)重载备忘

2014年03月23日 ⁄ 综合 ⁄ 共 378字 ⁄ 字号 评论关闭
下面代码可以编译通过,从代码中可以看出只要重载了指定对象的指针操作符重载时,编译器会自动转成父类指针类型
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;
}

抱歉!评论已关闭.