访问C++中的私有成员

4
在这段代码中,为什么我可以访问对象的私有成员而没有编译错误?
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;
}

5
如果它像Java一样,那是因为同一类的实例可以轻松访问其他实例的字段。字段是私有于类而不是实例。 - fge
1
你对面向对象范式非常陌生吗? - Lion
1
如果一个类无法访问自己的私有成员变量,那么谁可以呢? - David Schwartz
2个回答

9
因为private的意思是“对类可见”,而不是“对对象可见”。

2
可见性和可访问性是两个不同的概念。私有成员在类外部对于非成员函数是可见的,但是它们是不可访问的。 - Nawaz

4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接