Дружественная функция в C++
Функция вывода, которая записана вне класса, не видит
поля под private. Строка friend внутри
класса разрешает выбранной функции их читать.
Так подключают operator<<, когда поля закрыты.
Объявление friend пишут внутри класса, а саму
функцию - следом, уже снаружи. Запишем Vec:
#include <iostream>
class Vec {
public:
Vec(int xValue, int yValue) {
x = xValue;
y = yValue;
}
friend std::ostream& operator<<(std::ostream& out, const Vec& v);
private:
int x = 0;
int y = 0;
};
std::ostream& operator<<(std::ostream& out, const Vec& v) {
out << v.x << " " << v.y;
return out;
}
Сейчас создадим объект и выведем его:
int main() {
Vec point(4, 6);
std::cout << point << "\n";
return 0;
}
Сделайте класс Note с закрытым полем text.
Объявите дружественный вывод через <<.
Создайте объект со строкой "ok" и напечатайте его.
Для Note с текстом "hi" выведите значение
в поток с переводом строки.