【问题标题】:Is there an easy way to use a base class's variables?有没有一种简单的方法来使用基类的变量?
【发布时间】:2010-09-19 10:41:05
【问题描述】:

当你有一个派生类时,有没有一种更简单的方法可以通过以下方法引用变量:

BaseClass::variable

编辑
碰巧的是,我发现一个页面使用函数来解释这个问题: Template-Derived-Classes Errors。显然,使用模板类时会有所不同。

【问题讨论】:

  • 您能否让您的问题更具体一些,以便说明它与模板派生类相关的事实?谢谢。

标签: c++ inheritance variables


【解决方案1】:

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


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,这可能会导致混淆和错误。

【讨论】:

  • 澄清一下,访问基类的私有成员会导致编译器错误。编译器不会忽略它并寻找另一个匹配项。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多