2010-08-16 86 views
0

成員變量的方法是否可以訪問同一類中的其他私有成員變量?我想到了一個函數成員變量。成員變量在其他成員變量的方法中的隱私

指向私有成員變量的指針是否可以在類的外部解除引用和分配?在另一個成員變量的方法中怎麼樣?

也許像

class A 
{ 
someClass a,b; 

A(){a(&b);} 
} 

回答

1

每當你調用成員變量的方法時,除非它的類型是被定義的類,否則你將無法訪問私有成員變量。

如果您授予訪問(某種程度上)指向成員變量的指針而不預先確定它是「const」,那麼可以將其解除引用並分配給它。對於其他成員變量的方法,同樣的斷言仍然是正確的。在你的例子中,你正在調用一個方法(通過成員變量「a」),提供一個指向私有成員變量「b」的指針。你在A中訪問這兩個私有成員變量,這是完全正確的C++。

1

至少如果我正確地理解你的問題,答案是否定的。例如,這樣的代碼:

class outer { 
    class inner { 
     int x; 
    }; 

    void use_x() { inner::x = 0; } 
}; 

...不會編譯。 inner嵌套在outer中的事實不是給予outer的成員函數對inner的私有部分的任何特殊訪問。

編輯:編輯後,我看不出有什麼異常的話 - A()是(顯然)的class A成員還包括私有成員abprivate的定義是它可以在類內部進行編碼(即名稱可見),但不能在類外進行編碼。由於A()在課堂內,因此它們都可以看到ab

+0

這不是我的意思,雖然這是一個有趣的觀點。看我的編輯。 – user383352 2010-08-16 22:22:48