[英]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.