Я только что обнаружил, что могу сделать это на C ++, который прекрасно компилируется (MinGW и VC ++):
class A
{
private:
void doSth();
A* foo;
A* bar;
};
void A::doSth()
{
foo->bar;
}
Поле участника bar
из foo
это личное. Почему я могу получить к нему доступ и должен ли я это сделать?
В C ++ private
означает, что доступ ограничен одним и тем же классом, а не одним и тем же экземпляром объекта.
Вы также заметите, что в методах A доступ к другим экземплярам личных переменных A может быть. подобно
A::baz(A& other) {
other.bar; // legal
}
Видимость на уровне класса, а не на уровне экземпляра.