我目前正在学习 C++ 中的 OOP。
class Base {
public:
Base() {}
protected:
SomeClass variable;
};
class Child : public Base {
public:
Child() {}
void method() {
// Access variable
}
};
Run Code Online (Sandbox Code Playgroud)
从派生类访问基类中的成员变量时,这两种表示法有什么区别?
this->variableBase::variable什么时候是首选?
命名该变量的“完整”表达式是:
this->Base::variable
Run Code Online (Sandbox Code Playgroud)
它说:
variableBasethis由于您处于将自动找到基本成员的范围内,因此您不需要Base::.
而且,由于您在一个成员函数中,所有成员都会自动找到,因此您不需要this->.
您可能需要Base::从variable范围内的其他一些地方消除歧义,但该this->部分可能已经为您处理好了。
因此,通常,您只需要以下任何一项:
variable (一般)this->variable (如果来自另一个范围的东西隐藏了它)Base::variable (如果当前类型中的某些内容隐藏了它)至于什么是“首选”……只要满足了自己的需求,就可以为所欲为。但更简单通常被认为“更好”,并且会减少其他阅读您代码的人提出的问题。