Рассматривая тему конструктора я уже привел пример с модифкатором досутупа private, но мы не разбирали детально.Модификаторы доступа позволяют ограничивать доступ к методам и полям класса. В C++ существует 3 основных модификатора доступа, но сейчас я перечислю только 2 (с третьим познакомимся чуть позже):
При этом маркеры можно чередовать. Важно лишь, что все объекты за ним наследуют уровень доступа. Следующий пример демонстриует эту возможность:
struct Alpha {
// по умолчанию для struct модификатор открытый, то есть неявно действует модификатор public, если не указан явно private
Alpha(int n): _n(n) { }
// следующие элементы закрытые
private:
int _n;
// следующие элементы откртые
public:
int getN() { return _n; }
};
// ...
Alpha a(5);
cout << a.getN();
cout << a._n; // ошибка
В C++ ключевое слово struct можно заменить на class, тогда все поля и методы по умолчанию будут private.
class Alpha {
// по умолчанию для class модификатор закрытый, то есть неявно действует модификатор private, если не указан явно public
int _n;
// следующие элементы откртые
public:
Alpha(int n): _n(n) { }
int getN() { return _n; }
};
// ...
Alpha a(5);
cout << a.getN();
cout << a._n; // ошибка
То есть, фактически, в C++ разгницы в использовании между struct и class никакой кроме уровня доступа по умолчанию - в struct - по умолчанию все открыто, в class - все закрыто.