2013-06-05 102 views
-1

我看到的東西像一個IKM測試下面的代碼是在一個單獨的文件:文件範圍和訪問規則

class A{ 

public: 
    int a; 
    A(); 

protected: 
    int x; 

private: 
    int y; 

}; 

void ARandomFunction(){ 
    //Implementation 
} 

其中A類的變量可以ARandomFunction()訪​​問?一般來說,如果所有的符號都在同一個文件中,可以訪問什麼?

+0

這是正常的沒有什麼不同。 –

回答

0

作爲一個在同一個文件改變不了什麼,你的函數只能訪問a,因爲它是public和你的函數不是A成員(爲private成員),也不是一個子類的它(爲protected成員)。

1

這些變量將是每個實例(非靜態成員變量),因此您首先需要創建一個對象來訪問它們。只有public成員可以從獨立函數訪問,除非函數被聲明爲該類的函數friend,在這種情況下可以訪問所有成員。

這就是說他們是否在同一個文件中並不重要。一旦在函數實現的地方可見類定義,就可以訪問成員。

0

據我所知,使用上面的示例ARandomFUnction可以訪問公共變量和函數,而不管繼承。只有當ARandomFunction包含在繼承自A類或A類成員的類中時,才能訪問受保護的變量。只能從同一個類訪問專用變量和方法。

+0

假設公有繼承模型? – mezamorphic

+0

我相信如此。在很長一段時間內沒有用C++編程,所以如果我的信息不夠詳細,我很抱歉。 – StMotorSpark