我目前正在学习C++中的面向对象编程。
class Base {
public:
Base() {}
protected:
SomeClass variable;
};
class Child : public Base {
public:
Child() {}
void method() {
// Access variable
}
};
当从派生类访问基类中的成员变量时,这两种表示法有什么区别?
此->变量
base::variable
什么时候更好呢?
命名该变量的“完整”表达式为:
this->Base::variable
上面说:
变量
base
this
由于您位于将自动找到基成员的作用域内,因此不需要base::
。
而且,由于您位于一个成员函数中,所有成员都将自动找到,因此不需要this->
。
您可能需要base::
来消除作用域中其他一些变量
的歧义,但this->
部分可能已经为您解决了这一问题。
因此,通常情况下,您只需要以下任一项:
变量
(通常情况下)此->变量
(如果来自另一个作用域的东西隐藏了它)base::variable
(如果当前类型中的某个内容隐藏了它)至于什么是“首选”……只要满足了你的需求,你可以做任何你喜欢的事情。 但是更简单通常被认为是“更好的”,并且会使阅读您代码的其他人产生更少的问题。
缺少第三个选项:仅variable
。
什么时候更好呢?
最符合你审美的那个。
在某些情况下,某些选项是行不通的。 在这种情况下,最好使用那些确实有效的。 例如:如果已被另一个变量遮蔽,则不能使用纯变量名。 在基依赖于模板变量的某些情况下,不能使用限定名。