[英]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.