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

时间:2008-10-27 18:04:03

标签: c++ inheritance variables

当你有一个派生类时,是否有更简单的方法从以下方法引用变量:

BaseClass::variable

修改
当发生这种情况时,我找到了一个使用函数来解释此问题的页面: Template-Derived-Classes Errors。显然,使用模板类时会有所不同。

2 个答案:

答案 0 :(得分: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中的一个,它可能会导致混淆和错误。

答案 1 :(得分:1)