访问私有成员c ++

eli*_*264 4 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)
{
Run Code Online (Sandbox Code Playgroud)

cSource.m_nCents是私有的,为什么我可以执行以下操作:

    m_nCents = cSource.m_nCents;

    // return the existing object
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 9

因为private" 可见可见 ",而不是" 对象可见 ".

  • 可见性是一回事,可访问性是另一回事.即使在课堂外,私人成员也可以看到非成员函数,但它们是无法访问的. (2认同)