簡體   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