Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Эти треугольники являются подобными https://www.cyberforum.ru/ cpp-beginners/ thread850614.html
числа a и b выражают длинны катетов одного прямоугольного треугольника,с и d - другого. Эти треугольники являются подобными. помогите в этих программах я 0
C++ Использование LAPACK на c++
Здравствуйте! Помогите разобраться с установкой LAPACk на проект c++. Нужно реализовать алгоритмы разложений матриц. Подкиньте рабочий проект, а я уж сам потом разберусь Заранее спасибо
Передача массива в функцию по ссылке C++
Здравствуйте. Есть функция: void f(int &a) { int *p=&a; p=1; } Но почему-то при попытке передать ей массив ругается дебаггер: ...|10|error: invalid initialization of non-const...
C++ Структура в стеке Я наверное уже всех задолбал со своим стеком, но всё же мне еще нужна помощь)) Код, который ниже должен запрашивать у пользователя ввод структуры, которая после помещается в стеке. Так же программа... https://www.cyberforum.ru/ cpp-beginners/ thread850572.html
C++ Работа с указателями https://www.cyberforum.ru/ cpp-beginners/ thread850558.html
Расскажите как работает каждая строка в коде char *A = "123456789"; unsigned B = 1; char *X = A + B; char *Y = A - (- B);
C++ Формат Шрифта
Проблема в том что я не пойму какая нужна кодировка для того что бы шрифт встал на свое место перепробовал все. Мж»»БЛРВµДНшВзµЧІгЎЈ...
Найти самое большое число C++
У меня токой вопрос: Есьт 3 числа, найти самое большое. Как это сделать? Желательно исправить мой вариант.... #include <iostream> using namespace std; int main() { setlocale(LC_ALL,...
C++ Необходимо решить систему уравнений Доброй ночи.. Подсобите ребят, кому не трудно конечно.. Препод курсач дал, но объяснять не хочет ничего.. Сдавать в понедельник уже. В программировании не совсем тёмный, но с решением примеров еще... https://www.cyberforum.ru/ cpp-beginners/ thread850540.html
C++ Что не так с кодом? Компилируется, но не работает (связные списки) https://www.cyberforum.ru/ cpp-beginners/ thread850523.html
#include "stdio.h" #include "stdlib.h" #include <string.h> #include "iostream" using namespace std; class Elem { public:
C++ Алгоритм Флойда Ребят, помогите! нужно в коде поправить вывод кратчайшего пути, а именно что бы выводило сам кратчайший путь, а не только вершины. на входе файлик вида n m v1 u2 w1 v2 u2 w2 .... где n -... https://www.cyberforum.ru/ cpp-beginners/ thread850502.html
DU
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
28.04.2013, 19:49 0

Перегрузка оператора ввода вывода

28.04.2013, 19:49. Просмотров 1986. Ответов 13
Метки (Все метки)

Ответ

есть прием с перевызовом виртуальной функции. функция просто принимает в себя стрим и делает то, что
обычно делают в операторе <<. тут не нужно заморачиваться с френдами, с недоступностью данных из-за их приватности и с производными классами тоже нет проблем. Вот пример с 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
 
class Base
{
public:
  virtual void Print(std::ostream& out) const
  {
    out << "This is Base";
  }
};
 
std::ostream& operator << (std::ostream& out, const Base& base)
{
  // тут просто вызываем виртуальную
  // функцию базового класса и это
  // будет корректно работать и для
  // всех наследниках, о которых в
  // этом месте кода вообще ничего не
  // известно.
  base.Print(out);
  return out;
}
 
 
class Der1 : public Base
{
public:
  virtual void Print(std::ostream& out) const
  {
    out << "This is Der1";
  }
};
 
class Der2 : public Base
{
public:
  virtual void Print(std::ostream& out) const
  {
    out << "This is Der2";
  }
};
 
 
int main()
{
 
  Base base;
  Der1 der1;
  Der2 der2;
 
  std::cout << base << std::endl;
  std::cout << der1 << std::endl;
  std::cout << der2 << std::endl;
 
  Base& ref1 = base;
  Base& ref2 = der1;
  Base& ref3 = der2;
 
  std::cout << ref1 << std::endl;
  std::cout << ref2 << std::endl;
  std::cout << ref3 << std::endl;
 
 
  return 0;
}


Вернуться к обсуждению:
Перегрузка оператора ввода вывода
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 19:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Перегрузка оператора вывода в С++ (для вывода данных вектора)
Как правильно перегрузить оператор вывода для вектора чтобы он выводил все данные из вектора ? Для...

Перегрузка оператора вывода
Ребят, привет! Проблемная часть - operator &lt;&lt; если комментировать его вызов в main - сборка...

Перегрузка оператора вывода
Здравствуйте! При вызове перегруженного оператора возникает ошибка. Подскажите, как её исправить....

Перегрузка оператора вывода
Всем доброе утро! Или день... В общем, пытаюсь тут сделать перегрузку оператора вывода с...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.