Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2013, 08:53   #1
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию Что объекты передают в cout?

Здравствуйте. Возможно немного некорректный вопрос, но хотелось бы узнать что объекты передают в cout? Как, например, в Java если мы вызываем функцию System.out.print(obj), то у нашего obj может быть как угодно переопределена функция toString(), которая и вернёт строку для функции System.out.print
А как мне сделать, чтобы для моего какого-то объекта можно было получить желаемый вывод?
Например есть класс
Код:
class Bike
{
    private int whelsCount = 2; 
    private String color = "красный";
    ...
}

int main()
{
    Bike myMoto;
    cout << myMoto; 
/*Хочу чтобы cout выдал мне "у тебя красный байк, у него 2 колеса"*/
    return 0;   
}
Можно ли сделать что-то подобное?
Заранее, спасибо.
Alendorff вне форума Ответить с цитированием
Старый 23.09.2013, 09:11   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Можно.
Код:
class complex {
    double re,im;
public:
    complex(double re2, double im2):re(re2),im(im2){}
    friend ostream& operator<<(ostream & out, const complex par);
};

ostream& operator<<(ostream& out, const complex par){
    out << par.re << "+" << par.im << "i";
    return out;
}
Пример из книжки, так как копировать код на телефоне легче, чем набирать
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 23.09.2013 в 09:14.
BDA на форуме Ответить с цитированием
Старый 24.09.2013, 07:05   #3
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Пока что ленюсь проверить и не дочитал до дружественных функций в перегрузке операторов, но спасибо за ответ
Alendorff вне форума Ответить с цитированием
Старый 24.09.2013, 09:18   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

любые объекты с перегруженным оператором <<
и не только "в cout", но во все потоки (и в файловые и в строковые).
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В окне перемещаются объекты, отталкиваясь от стенок окна. Каждый объект имеет свой поток, перемещающий его. Встретившись, объекты ИльназВ C# (си шарп) 13 22.11.2012 19:00
Что будет выведено на экран cout<<--x<<’\n’; harvey Помощь студентам 0 10.10.2012 23:09
cout., cin., cout.setf, cout.unsetf kineziz Общие вопросы C/C++ 1 06.05.2012 02:50
Cout!!!!! Notan1310 Общие вопросы C/C++ 8 26.01.2012 04:08
Что быстрее putch() или cout? t2skler Общие вопросы C/C++ 0 29.10.2011 19:33