2014-06-09 73 views
0
class Container{ 



private: 
    int num_; 

public: 

    Container(): num_(1) 
    {}; 

    void add(Container other){ 
     num_+=other.num_; 
    } 

    int get_num(){ 
     return num_; 
    } 

    void set_num(int n){ 
     num_=n; 
    } 

};C++訪問函數參數私有變量

在上面的例子中other.num_是可以訪問的......爲什麼?不應該由於私人修飾符而無法訪問?

+3

不,*類*有權訪問其自己的私人成員。 – chris

+0

,因爲您正在從類Container中訪問它 – spiritwolfform

+0

因爲在C++封裝中是每個類而不是每個對象。這意味着Container類型的任何對象都可以訪問私有成員,不管它們是否在不同的對象中都沒關係。 –

回答

2

一個類可以隨時訪問它自己的成員,無論訪問修飾符是否具有成員變量。
private:只有類可以訪問
protected:只有派生類可以訪問
public:每個人都可以訪問
如果你寫:

class Container{ 
private: 
    int num_; 
} 

每個對象都可以訪問的任何其他對象的私有成員因爲在c++訪問修飾符是針對不是該類的每個對象的類。