首頁 > 後端開發 > C++ > 同一類別的C物件如何存取彼此的私有成員變數?

同一類別的C物件如何存取彼此的私有成員變數?

Susan Sarandon
發布: 2024-12-31 07:59:10
原創
401 人瀏覽過

How Can C   Objects of the Same Class Access Each Other's Private Member Variables?

為什麼同一個類別的物件可以存取彼此的私有資料?

在 C 中,同一類別的物件可以存取彼此的私有資料數據,因為存取控制是基於每個類別而不是每個物件進行操作的。這意味著私有資料只能被類別外部的物件存取。

例如,考慮以下程式碼:

class TrivialClass {
public:
  TrivialClass(const std::string& data) : mData(data) {}

  const std::string& getData(const TrivialClass& rhs) const {
    return rhs.mData;
  }

private:
  std::string mData;
};

int main() {
  TrivialClass a("fish");
  TrivialClass b("heads");

  std::cout << "b via a = " << a.getData(b) << std::endl;
  return 0;
}
登入後複製

在此程式碼中,TrivialClass 有一個私人成員變數 mData 和傳回對 mData 的引用的公用成員函數 getData。當物件 a 和 b 建立後,它們都可以透過 getData 函數存取彼此的私有資料。

這是可能的,因為 C 的存取控制是基於以下規則:

  • 公共會員可以從任何地方存取。
  • 私人會員只能從內部存取類別。
  • 受保護的成員可以從類別內部和衍生類別存取。

由於 mData 是私有成員,因此只能從 TrivialClass 類別內部存取它。但是,由於存取控制是按類別進行的,因此同一類別的物件仍然可以存取彼此的私有成員。

並非所有程式語言都存在這種行為。某些語言(例如 Java)具有真正的每個物件存取控制,這意味著同一類別的物件不能存取彼此的私有資料。

以上是同一類別的C物件如何存取彼此的私有成員變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板