访问私有成员c ++

时间:2011-12-17 19:57:16

标签: c++ 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是私有的,为什么我可以执行以下操作:

    m_nCents = cSource.m_nCents;

    // return the existing object
    return *this;
}

2 个答案:

答案 0 :(得分:9)

因为private表示“可见”可以访问“”,而不是“可见对象可访问”。

答案 1 :(得分:4)

您可以从类的成员函数/构造函数/析构函数/朋友访问私有成员。它是基于类的可访问性,而不是基于对象的可访问性。