#include <string>
#include <iostream>
#include <vector>
using namespace std;
class Test {
public:
int testing() {
Test t;
return t.x;
}
private:
int x = 0;
};
int main() {
Test a;
cout << a.testing() << endl;
}
我不知道我能訪問私有資料成員x的t(實體Test不是this的類定義中)Test。為什么我可以t.x在示例代碼中使用?
uj5u.com熱心網友回復:
通俗地說,C private是“類私有的”而不是“物件私有的”。
范圍與源代碼的詞法元素相關聯,而不是與運行時物體本身相關聯。此外,編譯后的代碼幾乎不知道編譯源中的邏輯物體。出于這個原因,可訪問性僅在詞法范圍級別上強制執行。在類的范圍內,型別別的任何物件都可以訪問其私有成員。
另外,否則 C 將無法作為一個整體作業。如果在每個物件的基礎上檢查可訪問性,則無法撰寫復制建構式或賦值運算子。這些操作需要訪問源物件的成員才能初始化/覆寫目標物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/336780.html
