Модификатор доступа private служит для указания приватных (закрытых) членов класса. По умолчанию, в классе создаются закрытые члены класса (private), а в структурах - открытые (public), это единственное отличие структур от классов в С++ (это не шутка и на заблуждение).
Для объявления закрытых членов класса нужно внутри объявления класса написать private:. Данный модификатор будет действовать либо до окончания объявления класса, либо до встречи другого модификатора доступа (protected или public);
На члены класса (элементы) объявленные с модификатором доступа private распространяются следующие правила:
1) Элементы недоступны из других классов;
2) Элементы недоступны из производных классов;
3) Элементы доступны внутри класса где они определены, в том числе и в функциях класса;
4) Элементы доступны из дружественных функций;
5) Элементы доступны из дружественных классов.
#include <iostream> // cout
using namespace std;
class My_class{
private: // Объявление закрытых членов класса
int a = 10; // Приватная целочисленная переменная
int get_a(){ // Приватная функция
return a; // К приватным членам можно обращаться внутри класса
}
int b = get_a(); // К приватным членам можно обращаться внутри класса
int c = a; // К приватным членам можно обращаться внутри класса
public: // Объявление открытых членов класса
int d = 10; // Открытая целочисленная переменная
void print_d(){ // Открытая функция
cout << d << endl; // Вывод значения переменной d
}
};
int main(){
My_class obj; // Создали объект obj класса My_class
// int s = obj.a; // Ошибка! Нельзя обращаться к закрытым членам класса (к переменной а)
// int si = obj.get_a(); // Ошибка! Нельзя обращаться к закрытым членам класса (к функции get_a() )
// int siz = obj.b; // Ошибка! Нельзя обращаться к закрытым членам класса (к переменной b)
// int size = obj.c; // Ошибка! Нельзя обращаться к закрытым членам класса (к переменной c)
int dd = obj.d; // Можно использовать открытые члены класса (переменную d)
obj.d = 20; // Можно использовать открытые члены класса и для записи (переменную d)
obj.print_d(); //20 Можно использовать открытые члены класса (функцию print_d() )
}