為什麼同一個類別的物件可以存取彼此的私有資料?
在 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中文網其他相關文章!