有没有一种简单的方法来使用基类的变量?

3
当您有一个派生类时,除了以下方式之外,是否有一种更简单的方法从方法中引用变量?
```python self.variable_name ```
以上是最常见和推荐的方法。
BaseClass::variable

编辑
恰好,我找到了一篇使用函数解释这个问题的页面: 模板派生类错误。显然,在使用模板类时会有所不同。


你能否让你的问题更具体一些,以便说明它与模板派生类有关吗?谢谢。 - andreas buykx
2个回答

10

如果基类成员变量是受保护的或公共的,那么您可以在派生类的任何成员函数中通过名称引用它。如果它是私有的,则编译器根本不允许派生类访问它。例如:


class Base
{
protected:
  int a;

private:
  int b;
};

class Derived : public Base
{
  void foo()
  {
    a = 5;  // works
    b = 10; // error!
  }
};

保持所有成员变量私有,并根据需要提供getter和setter方法也有其优点。

另外,要注意“隐藏”数据成员:


class Base
{
public:
  int a;
};

class Derived : public Base
{
public:
  int a;
};

这将创建两个名为a的变量:一个在Base中,另一个在Derived中,可能会导致混淆和错误。


只是为了澄清,访问基类的私有成员将导致编译器错误。编译器不会忽略它并寻找另一个匹配项。 - KeithB

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接