繁体   English   中英

从 C++ 中的派生 class 访问成员变量

[英]Accessing member variables from a derived class in C++

我目前在 C++ 中学习 OOP。

class Base {
public:
    Base() {}

protected:
    SomeClass variable;
};


class Child : public Base {
public:
    Child() {}

    void method() {
        // Access variable
    }
};

从派生的 class 访问基础 class 中的成员变量时,这两种表示法有什么区别?

  • this->variable
  • Base::variable

什么时候首选?

命名该变量的“完整”表达式是:

this->Base::variable

它说:

  1. 名字是variable
  2. 它存在于Base类型中
  3. 拥有这个实例的 object 是this

由于您在 scope 中,将自动找到基本成员,因此您不需要Base::

而且,由于您在成员 function 中,所有成员都会自动找到,因此您不需要this->

您可能需要Base::来消除 scope 中的其他variable的歧义,但this->部分可能已经为您处理好了。

因此,通常,您只需要以下任何一项:

  1. variable (通常)
  2. this->variable (如果来自另一个 scope 的东西隐藏了它)
  3. Base::variable (如果当前类型中的某些东西隐藏了它)

至于什么是“首选”……只要你满足了你的需求,你就可以为所欲为。 但更简单通常被认为是“更好”,并且会减少其他阅读您代码的人提出的问题。

缺少第三个选项: Just variable

什么时候首选?

最符合你审美的那一款。

在某些情况下,某些选项不起作用。 在这种情况下,最好使用那些有效的。 示例如下: 如果已被另一个变量隐藏,则不能使用普通变量名。 在基数依赖于模板变量的某些情况下,不能使用限定名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM