Чтобы включить вывод твоего класса Fred, используй перегрузку оператора с оператором << (сдвиг влево). Это позволит твоим объектам работать прямо со стандартными потоками вывода.
Реализуй operator<< как не-членскую friend-функцию, а не как членскую функцию. Поскольку объект потока (std::ostream) находится слева от оператора, объект Fred становится правым операндом. Friend-функция даёт нужный доступ к приватным членам, при этом сохраняя правильный приоритет операций.
#include <iostream>
class Fred {
public:
friend std::ostream& operator<< (std::ostream& o, const Fred& fred);
private:
int i_; // Пример переменной-члена
};
std::ostream& operator<< (std::ostream& o, const Fred& fred) {
return o << fred.i_;
}
int main() {
Fred f;
std::cout << "My Fred object: " << f << "\n";
}
std::ostream&, чтобы поддержать цепочку нескольких операций вывода в одном выраженииconst-ссылку: параметр Fred объявлен как const, потому что вывод не должен изменять объектfriend: добавь объявление friend внутри определения класса, чтобы дать оператору доступ к приватным членамЕсли тебе нужен объект Fred слева (например, myFred << std::cout), можно реализовать operator<< как членскую функцию. Однако стандартный способ — поток слева.
Функцию operator<< необходимо реализовать как дружественную нечленовскую функцию, потому что std::ostream находится слева от оператора, делая объект Fred правым операндом.
Новый — ещё не проверен сообществом
Вы