Ім'я файлу: Завдання до заліку_Чалий.docx
Розширення: docx
Розмір: 23кб.
Дата: 29.12.2021
скачати

Індивідуальні завдання

22. Дружні функції класу та дружні класи

Бывают случаи, когда для заданного класса нужно объявить другой класс или функцию, которые должны иметь неограниченный доступ к внутренним переменным и методам класса. Такая необходимость возникает из сути решаемой задачи.

Если класс A объявляется «дружественным» к классу B, то объекты класса A имеют доступ ко всем членам данных и методам класса B. Если функция объявляется «дружественной» к некоторому классу, то из этой функции также есть неограниченный доступ к членам данных и методам этого класса.

Таким образом, «дружественный» класс или функция дополняют функционал класса в котором они объявлены как «дружественные».

Чтобы объявить «друженственный» класс к данному классу, используется ключевое слово friend. Общая форма объявления «дружественного» класса к данному имеет вид:

class CClass

{

// ...
friend class CFriendClass;
// ...

};
class CFriendClass

{

// ...

};
где

  • CClass – класс, в котором объявляется «дружественный» класс CFriendClass. Все переменные (даже и private) и методы этого класса есть доступными для объектов класса CFriendClass;

  • CFriendClass – класс, который есть «дружественным» к классу CClass. Объявление «дружественного» класса CFriendClass к классу CClass может быть в любом месте тела класса – в границах объявления класса (между фигурными скобками { }).


Объявление «дружественной» функции к классу начинается из ключевого слова friend. Общая форма объявления «дружеской» функции к классу имеет вид:

friend type FunName(parameters);

где

  • FunName – имя «дружественной» функции;

  • type – тип, который возвращается функцией FunName();

  • parameters – параметры «дружественной» функции. Чтобы получить объект нужного класса в функции FunName() целесообразно передать в эту функцию ссылку (или указатель) на объект этого класса.

Если нужно объявить «дружественную» функцию в некотором классе, то общий вид такого объявления следующий:

class CClass

{

// ...
friend type FunName(parameters);
// ...

};

где

  • FunName – имя «дружественной» функции;

  • type – тип, который возвращается функцией FunName();

  • parameters – параметры «дружественной» функции.


Задача 6. Створити клас із полями, зазначеними в індивідуальному завданні .

Реалізувати в класі методи:

- конструктор за замовчуванням;

- конструктор перезавантаження з параметрами;

- деструктор ;

- функцію обробки даних, зазначену в індивідуальному завданні ;

- функцію формування рядка інформації про об'єкт.

Створити зовнішню функцію ( поза класом) для обробки об'єкта відповідно до індивідуального завдання. Створити проект для демонстрації роботи: введення й вивід інформації про об'єкти.


Клас і його поля

Функція-метод обробки даних об'єкта

Зовнішня функція

Час (три числа): години, хвилини, секунди

Збільшити час на одну секунду

Визначити, чи є час пільговим для абонентів ( від 0 до 8 годин)

#include

#include

using namespace std;
class data {

private:

int hour;

int minut;

int second;
public:

data() {

hour = 0;

minut = 0;

second = 0;

}

data(int hour_, int minut_, int second_) {

hour = hour_;

minut = minut_;

second = second_;

}
void reduce_data() {

second = second + 1;

if (second > 60) {

second = 1;

}

}

void how_data() {

cout << hour << ":" << minut << ":" << second << endl;

}

};

int main()

{

int a;

data one(24, 24, 59);

one.how_data();

cout << "Увеличить время" << endl;

cin >> a;

one.reduce_data();

one.how_data();

}


скачати

© Усі права захищені
написати до нас