В объектно-ориентированном программировании существует такое понятие как механизм сокрытия данных. Давайте возьмем случай когда вы покупаете магнитофон то вам доступны только те его части которые необходимы для работы с ним (кнопочки, экранчики и т.д.), такие части как провода, магнитные головки и т.д. вам не доступны. В структурах и классах(позже мы узнаем что это такое) сокрытие данных осуществляется с помощью ключевых слов public(открытый), private(закрытый) и protected(защищенный). Закрытые члены в программе недоступны, а открытые наоборот доступны. Внутри структуры после ключевого слова private, все члены ограничены доступом. Закрытыми членами могут пользоваться только функции-члены этой структуры. Открытые члены могут использоваться и вне структуры.
    Напишем структуру характеризующую квартиру. В ней будут такие члены как number(номер квартиры), count_room(количество комнат), floor(этаж), area(площадь), price(цена), status(приватизирована или нет), эти члены мы сделаем закрытыми, а для доступа к ним напишем функции.

 

struct kwart
{
public:
    int GetNumber();
    int GetCountRoom();
    int GetFloor();
    int GetArea();
    int GetPrice();
    bool GetStatus();
    void SetNumber(int);
    void SetCountRoom(int);
    void SetFloor(int);
    void SetArea(int);
    void SetPrice(int);
    void SetStatus(bool);
private:
    int number;
    int count_room;
    int floor;
    int area;
    int price;
    bool status;
};

int kwart::GetNumber()
{
    return number;
}

int kwart::GetCountRoom()
{
    return count_room;
}

int kwart::GetFloor()
{
    return floor;
}

int kwart::GetArea()
{
    return area;
}
int kwart::GetPrice()
{
    return price;
}
bool kwart::GetStatus()
{
    return status;
}
void kwart::SetNumber(int num)
{
    number = num;
}
void kwart::SetCountRoom(int count)
{
    count_room = count;
}
void kwart::SetFloor(int num)
{
    floor = num;
}
void kwart::SetArea(int num)
{
    area = num;
}
void kwart::SetPrice(int num)
{
    price = num;
}
void kwart::SetStatus(bool stat)
{
    status = stat;
}

    Теперь если мы напишем:

 

kwart kw;
int i = kw.area;

это будет ошибкой, так как переменная area - закрытая, если мы хотим присвоить переменной i ее значение, то нужно воспользоваться функцией GetArea():

 

kwart kw;
kw.SetArea(20);
int i = kw.GetArea();

А вот в этом фрагменте уже все правильно. Сначала мы переменной area с помощью функции SetArea() присваиваем значение 20, а потом переменной i присваиваем значение area.