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

Наследование ostream - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как вывести в фаил rdbuff() ? http://www.cyberforum.ru/cpp-beginners/thread621900.html
// po;jkyhgfd.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" // asdvcx.cpp: главный файл проекта. #include <iostream> #include <boost/asio.hpp> #include <conio.h>
C++ Классы. Implement the two functions of the class. Ребята, суть такая вообщем, я проходил когда-то C++, но классы я не затрагивал, помогите с заданием, мне лишь бы разоьраться в этом было бы неплохо. C++ Template: class MyClass { public: getNiCount(...) { } replaceNiWithNI(...) http://www.cyberforum.ru/cpp-beginners/thread621888.html
Ссылка на структуру C++
Рассматривал пример из книги Праты. Раздел про ссылки на структуры. В книжке был приведён пример, код примера можно увидеть ниже. У меня возник вопрос для чего нужен этот значек в прототипе и определении функции (выделен красным) const sysop & use (sysop & sysopref); Далее в книге этого не было разъяснено. Я убрал этот значек из прототипа и определения: результат работы программы остался тем же....
Определить средний балл по университету C++
ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! 2.тема : ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СТРУКТУР,задание:Ведомость абитуриентов, сдавших вступительные экзамены в универ-ситет, содержит ФИО абитуриента и его оценки. Определить средний балл по университету и вывести список абитуриентов, средний...
C++ Вывести на экран таблицу значений функции y(x) http://www.cyberforum.ru/cpp-beginners/thread621848.html
ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! вот задания сами. 3.тема :ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ задание :Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1 (см. лабораторную работу №3, табл. 3.1). Вычисление y(x) оформить...
C++ Файлы и массивы структур: поиск, сортировка ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! вот задания сами. 4.тема ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ФАЙЛОВ задание :На АТС информация о разговорах содержит номер телефона абонента, время разговора и тариф. Вывести для заданного абонента сумму оплаты за раз-говоры. 5.тема СОРТИРОВКА ПО... подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.07.2012, 22:57     Наследование ostream
soon, вот код по вашему предложению. Если не перегрузить << для int, то не работает.
код
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
#include <iostream>
#include <Windows.h>
using namespace std;
 
class Rostream : public ostream
{
        
        public:
        Rostream(basic_streambuf<char, char_traits<char>>* s) : ostream(s)
        {
        
        }
                
        Rostream& operator<<(const char *chbuff)
        {
              char chbuff2[2] = "q";
              string alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
                        
              for(int i=0; i<strlen(chbuff); ++i)
              {
                  if(alphabet.find(chbuff[i]) < 0)
                  {
                      // если не русский язык, то просто вывести
                      cout << chbuff[i];
                      continue;
                  }
                  chbuff2[0] = chbuff[i];
                  CharToOem(chbuff2, chbuff2);
                  cout << chbuff2;
               }
               return *this;
         }
 
         //Rostream& operator<<(const int val)
         //{
              //cout << val;
              //return *this;
         //}
 
};
 
int main()
{
  
  Rostream newcout(cout.rdbuf());
  newcout << 12;
  newcout << "ФФФФФФФФФФФФФФ";
  
  system("pause");
  return 0;
}


Добавлено через 4 минуты
Ksan, soon подсказал как лучше буфер сделать для конструктора.

Добавлено через 14 минут
Цитата Сообщение от Ksan Посмотреть сообщение
Что значит двоеточие? Я уже гуглил и не раз. Как это переделать без него?
В данном случае, без него никак. Цитирую сам себя:"...До входа в тело конструктора, должен былть создан объект базового класса..." Для этого и используется список инициализаторов (можно только в конструкторах). Например, можно так:
C++
1
2
3
4
5
6
7
8
class A 
  {
    int x;
    int y;
    
    A(int a, int b) : x(a), y(b)
    { }
  };
, или так
C++
1
2
3
4
5
6
7
8
9
10
class A 
{
    int x;
    int y;
    
    A(int a, int b) : x(a)
    { 
      y = b;
    }
};
, а можно так:
C++
1
2
3
4
5
6
7
8
9
10
class A 
{
    int x;
    int y;
    
    A(int a, int b)
    { x = a;
      y = b;
    }
};
. Для данного примера, всё равно. При наследовании, создание объекта базового класса, только через список инициализаторов, потому что необходимо, чтобы объкт базового класса создавался до создания объекта производного класса.
 
Текущее время: 13:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru