我看到的東西像一個IKM測試下面的代碼是在一個單獨的文件:文件範圍和訪問規則
class A{
public:
int a;
A();
protected:
int x;
private:
int y;
};
void ARandomFunction(){
//Implementation
}
其中A類的變量可以ARandomFunction()訪問?一般來說,如果所有的符號都在同一個文件中,可以訪問什麼?
我看到的東西像一個IKM測試下面的代碼是在一個單獨的文件:文件範圍和訪問規則
class A{
public:
int a;
A();
protected:
int x;
private:
int y;
};
void ARandomFunction(){
//Implementation
}
其中A類的變量可以ARandomFunction()訪問?一般來說,如果所有的符號都在同一個文件中,可以訪問什麼?
作爲一個在同一個文件改變不了什麼,你的函數只能訪問a
,因爲它是public
和你的函數不是A
成員(爲private
成員),也不是一個子類的它(爲protected
成員)。
這些變量將是每個實例(非靜態成員變量),因此您首先需要創建一個對象來訪問它們。只有public
成員可以從獨立函數訪問,除非函數被聲明爲該類的函數friend
,在這種情況下可以訪問所有成員。
這就是說他們是否在同一個文件中並不重要。一旦在函數實現的地方可見類定義,就可以訪問成員。
據我所知,使用上面的示例ARandomFUnction可以訪問公共變量和函數,而不管繼承。只有當ARandomFunction包含在繼承自A類或A類成員的類中時,才能訪問受保護的變量。只能從同一個類訪問專用變量和方法。
假設公有繼承模型? – mezamorphic
我相信如此。在很長一段時間內沒有用C++編程,所以如果我的信息不夠詳細,我很抱歉。 – StMotorSpark
這是正常的沒有什麼不同。 –