2011-12-17 10 views
4

このコードでは、なぜコンパイルエラーのないオブジェクトのプライベートメンバーにアクセスできますか?プライベートメンバーへのアクセスC++

m_nCents = cSource.m_nCents; 

    // return the existing object 
    return *this; 
} 
+5

Javaの場合、同じクラスのインスタンスが問題なく他のインスタンスのフィールドにアクセスできるためです。フィールドはクラスに対してプライベートであり、インスタンスに対してはプライベートではありません。 – fge

+1

あなたはオブジェクト指向のパラダイムを新しく使っていますか? – Lion

+1

クラスが自身のプライベートメンバー変数にアクセスできない場合は、誰ができますか? –

答えて

9

privateための手段 "見えるアクセスクラスに" ではなく、 "見えアクセス可能なオブジェクトへの":私は次の操作を行うことができる理由

class Cents 
{ 
private: 
    int m_nCents; 
public: 
    Cents(int nCents=0) 
    { 
     m_nCents = nCents; 
    } 

    // Copy constructor 
    Cents(const Cents &cSource) 
    { 
     m_nCents = cSource.m_nCents; 
    } 

    Cents& operator= (const Cents &cSource); 

}; 

Cents& Cents::operator= (const Cents &cSource) 
{ 

cSource.m_nCentsはプライベートです。

+2

視認性は1つのことであり、アクセシビリティは別のものです。プライベートメンバは、クラス外、メンバ以外のメンバ関数に対しても可視ですが、アクセス不可能です。 – Nawaz

4

プライベートメンバーには、そのクラスのメンバー関数/コンストラクター/デストラクター/ freindsからアクセスできます。オブジェクトベースのアクセシビリティではなく、クラスベースのアクセシビリティです。

関連する問題