Почему я могу получить доступ к закрытым данным с помощью указателей и должен ли я это делать?

Я только что обнаружил, что могу сделать это на C ++, который прекрасно компилируется (MinGW и VC ++):

class A
{
private:
void doSth();
A* foo;
A* bar;
};

void A::doSth()
{
foo->bar;
}

Поле участника bar из foo это личное. Почему я могу получить к нему доступ и должен ли я это сделать?

0

Решение

В C ++ private означает, что доступ ограничен одним и тем же классом, а не одним и тем же экземпляром объекта.

2

Другие решения

Вы также заметите, что в методах A доступ к другим экземплярам личных переменных A может быть. подобно

A::baz(A& other) {
other.bar; // legal
}

Видимость на уровне класса, а не на уровне экземпляра.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector