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

标签 c++ inheritance variables

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

BaseClass::variable

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

最佳答案

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


class Base
{
protected:
  int a;

private:
  int b;
};

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

对于将所有成员变量保持私有(private),并根据需要提供 getter 和 setter,还有一些话要说。

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


class Base
{
public:
  int a;
};

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

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

关于c++ - 有没有一种简单的方法来使用基类的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/240874/

相关文章:

c++ - qt minimumSize() 返回 0 但在 qt designer 中它被设置为非零

java - 继承的方法可以访问Java中的子类字段吗

c# - 为基类的每个 child 创建一个静态变量并获取它

c++ - 继承嵌套模板类的特化

c++ - 菜单的嵌套循环(基本 C++)

c - 如何在中断中处理全局变量

variables - 变量定义如何在汇编中工作?

c++ - 如何在 C++ 中通过表达式定义常量?

c++ - 为什么我的shared_ptr会泄漏内存?

c++ - 重载运算符 !=