Я всегда считал, что
private закрывает доступ к полям для всех кроме экземпляра-владельца. Однако сейчас заметил, что данный код на GCC указывает всего на одну ошибку.
#include <conio.h>
#include <iostream>
using namespace std;
class foo{
private:
int bar;
public:
bool check(const foo &baz)const;
};
inline bool foo::check(const foo &baz)const{
return (this->bar==baz.bar);
}
int main()
{
foo a;
a.bar=1;
getch ();
return 0;
}
Как жить? Я блуждал в темноте? По приведённому выше коду можно утверждать, что
private закрывает поля лишь для других классов и функций (если только те не дружественные).
В
Бьерн Страуструп Язык программирования C++. Специальное издание. Пер. с англ. — М.: Издательство Бином, 2011 г. — 1136 с: ил. формулировка, не противоречащая ни первому варианту, ни второму.
Пользователи студии отпишитесь, пожалуйста!