3

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

BaseClass::variable

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

4

2 回答 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:一个 in Base,一个 in Derived,并且可能会导致混淆和错误。

于 2008-10-27T18:05:44.110 回答
1

相关:在 C++ 中使用“super”

于 2008-10-27T18:16:06.603 回答