繁体   English   中英

调用c ++隐藏的运算符函数

[英]calling c++ hidden operator function

我想问一下如何在派生类重写函数中调用隐藏的Base类操作符函数,下面是我的代码,注释行是问题。

class Base{
public:
    virtual bool operator^(Base &b){
        cout << "hehe" << endl;
        return true;
    }
    virtual void fn() = 0;
};

class Dev: public Base{
public:
    virtual bool operator^(Base &b){
        // how to call operator ^ in the Base class here??
        cout << "haha" << endl;
        return false;
    }
    virtual void fn(){}
};

使用运营商的限定名称。

例如

#include <iostream>

using namespace std;

class Base{
public:
    virtual bool operator^(Base &b){
        cout << "hehe" << endl;
        return true;
    }
    virtual void fn() = 0;
};

class Dev: public Base{
public:
    virtual bool operator^(Base &b){
        Base::operator^( b );
        cout << "haha" << endl;
        return false;
    }
    virtual void fn(){}
};

int main() 
{
    Dev v;
    Base &b = v;

    v ^ b;

    return 0;
}

程序输出是

hehe
haha

你也可以明确地预测*this

class Dev: public Base{
public:
    virtual bool operator^(Base &b)
    {
        static_cast<Base&>(*this) ^ b;

        cout << "haha" << endl;
        return false;
    }
    virtual void fn(){}
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM