Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП шпорка1.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
61.79 Кб
Скачать

43В. Функции-друзья

Иногда удобно разрешить некоторым функциям доступ к закрытым членам класса. Механизм друзей позволяет классу разрешать доступ к своим неоткрытым членам.

Объявление друга начинается с ключевого слова friend и может встречаться только внутри определения класса. Так как друзья не являются членами класса, то не имеет значения, в какой секции они объявлены. В примере ниже мы сгруппировали все подобные объявления сразу после заголовка класса:

class Screen {

friend istream&

operator>>( istream&, Screen& );

friend ostream&

operator<<( ostream&, const Screen& );

public:

// ... оставшаяся часть класса Screen

};

Операторы ввода и вывода теперь могут напрямую обращаться к закрытым членам класса Screen. Простая реализация оператора вывода выглядит следующим образом:

#include

ostream& operator<<( ostream& os, const Screen& s )

{

// правильно: можно обращаться к _height, _width и _screen

os << "<" << s._height

<< "," << s._width << ">";

os << s._screen;

return os;

}

Другом может быть функция из пространства имен, функция-член другого класса или даже целый класс. В последнем случае всем его функциям-членам предоставляется доступ к неоткрытым членам класса, объявляющего дружественные отношения. (В разделе 15.2 друзья обсуждаются более подробно.)

44В. Явное и неявное преобразование типов.

В C++ различают явное и неявное преобразование типов данных. Неявное преобразование типов данных выполняет компилятор С++, ну а явное преобразование данных выполняет сам программист