[英]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
它说:
variable
的Base
类型中this
由于您在 scope 中,将自动找到基本成员,因此您不需要Base::
。
而且,由于您在成员 function 中,所有成员都会自动找到,因此您不需要this->
。
您可能需要Base::
来消除 scope 中的其他variable
的歧义,但this->
部分可能已经为您处理好了。
因此,通常,您只需要以下任何一项:
variable
(通常)this->variable
(如果来自另一个 scope 的东西隐藏了它)Base::variable
(如果当前类型中的某些东西隐藏了它)至于什么是“首选”……只要你满足了你的需求,你就可以为所欲为。 但更简单通常被认为是“更好”,并且会减少其他阅读您代码的人提出的问题。
缺少第三个选项: Just variable
。
什么时候首选?
最符合你审美的那一款。
在某些情况下,某些选项不起作用。 在这种情况下,最好使用那些有效的。 示例如下: 如果已被另一个变量隐藏,则不能使用普通变量名。 在基数依赖于模板变量的某些情况下,不能使用限定名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.