このコードでは、なぜコンパイルエラーのないオブジェクトのプライベートメンバーにアクセスできますか?プライベートメンバーへのアクセスC++
m_nCents = cSource.m_nCents;
// return the existing object
return *this;
}
このコードでは、なぜコンパイルエラーのないオブジェクトのプライベートメンバーにアクセスできますか?プライベートメンバーへのアクセスC++
m_nCents = cSource.m_nCents;
// return the existing object
return *this;
}
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はプライベートです。
視認性は1つのことであり、アクセシビリティは別のものです。プライベートメンバは、クラス外、メンバ以外のメンバ関数に対しても可視ですが、アクセス不可能です。 – Nawaz
プライベートメンバーには、そのクラスのメンバー関数/コンストラクター/デストラクター/ freindsからアクセスできます。オブジェクトベースのアクセシビリティではなく、クラスベースのアクセシビリティです。
Javaの場合、同じクラスのインスタンスが問題なく他のインスタンスのフィールドにアクセスできるためです。フィールドはクラスに対してプライベートであり、インスタンスに対してはプライベートではありません。 – fge
あなたはオブジェクト指向のパラダイムを新しく使っていますか? – Lion
クラスが自身のプライベートメンバー変数にアクセスできない場合は、誰ができますか? –