Форум программистов, компьютерный форум CyberForum.ru

перегрузка cout, operator<< - C++

Восстановить пароль Регистрация
 
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
25.09.2012, 20:36     перегрузка cout, operator<< #1
Как реализовано, что можно перегрузить operator<< в потоке вывода, если нету объявления нужной функции внутри класса?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 20:36     перегрузка cout, operator<<
Посмотрите здесь:

C++ Перегрузка operator+
C++ перегрузка operator<<
C++ перегрузка operator[][][]
C++ Перегрузка operator new
C++ Перегрузка operator->()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
25.09.2012, 21:39     перегрузка cout, operator<< #2
перегрузить глобальный operator<<
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
 
class A
{
public:
    A(int _a, int _b) : a(_a), b(_b){}
    A(A const& o) : a(o.a), b(o.b)
    {
        std::cout << "cCtor" << std::endl;
    }
    A(A const volatile& o) : a(o.a), b(o.b)
    {
        std::cout << "vcCtor" << std::endl;
    }
    int a;
    int b;
};
 
std::ostream& operator<<(std::ostream& os, A const& o)
{
    return os << o.a << "  " << o.b;
}
 
int main()
{
    A a(1, 32);
    std::cout << a << std::endl;
    return 0;
}
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
26.09.2012, 09:36  [ТС]     перегрузка cout, operator<< #3
igorrr37, не КАК перегрузить, а как реализовано то, что можно перегрузить, если в классе ostream нету operator<<(A a)
?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
26.09.2012, 09:38     перегрузка cout, operator<< #4
Kgfq, если поставить на вывод переменную, вызовется перегруженный << внутри класса.
Yandex
Объявления
26.09.2012, 09:38     перегрузка cout, operator<<
Ответ Создать тему
Опции темы

Текущее время: 09:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru