tfo*_*one 5 c++ inheritance constants c++14
在我的问题中,我将有几个类共享 getter 和 setter(在我的例子中是operator())。假设我有以下内容
class Base
{
public:
int& operator()() { return value; }
int operator()() const { return value; }
protected:
int value;
};
class Derived : public Base
{
public:
int operator()() const { return value; }
};
Run Code Online (Sandbox Code Playgroud)
我期望能够做这样的事情:
Derived d;
d() = 1;
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨说该表达式不可赋值。然而,这样做
Derived d;
d.Base::operator()() = 1;
Run Code Online (Sandbox Code Playgroud)
工作正常。这是为什么 ?编译器不应该能够在基类中查找成员函数吗?有没有办法避免重写派生类的非常量方法?
编译器不应该能够在基类中查找成员函数吗?
是的,这是可能的,但你必须明确。为此,您可以使用using声明,将运算符引入派生类:
class Derived : public Base
{
public:
using Base::operator();
int operator()() const { return value; }
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1181 次 |
| 最近记录: |