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

Создание класса путем наследования - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массив: Найти такую неразрывную последовательность положительных чисел, сумма элементов у которой максимальная. http://www.cyberforum.ru/cpp-beginners/thread834860.html
Найти такую неразрывную последовательность положительных чисел, сумма элементов у которой максимальная. ну вот я сделал, но только будет работать, если есть только один отрицательный элемент....
C++ C++11 новые классы стандартной библиотеки Здравствуйте. Программирую в eclipse на С++, использую С++11. Код в новом стандарте компилируется, однако мне нужен новый класс initializer_list (+ ещё другие новые классы). Посмотрел, что сам... http://www.cyberforum.ru/cpp-beginners/thread834844.html
Инлайн-функция замедляет работу C++
Здравствуйте! видимо что-то делаю неправильно...имею код. Запускаю скомпилированную программу - работает с одной скоростью. Копипастю код в инлайн функцию - скорость выполнения резко уменьшается....
Даны шесть различных чисел. Определить максимальное из них C++
Даны шесть различных чисел. Определить максимальное из них. (Определить функцию, находящую максимум из двух различных чисел.) Еще одна подобная тема, и последуют санкции.
C++ Выяснить является ли хоть одно из данных чисел палиндромом(перевёртышем) http://www.cyberforum.ru/cpp-beginners/thread834825.html
Даны 2 натуральных числа выяснить является ли хоть одно из них палиндромом(перевёртышем) тоесть таким числом десятичная запись которого читается одинаково слева на право и справо на лево.(определить...
C++ Лучшие ресурсы в Интернет - разработчикам C++ Все источники широко известны - но тем не менее: http://strongcpp.blogspot.ru/2013/04/c.html подробнее

Показать сообщение отдельно
stima
474 / 323 / 31
Регистрация: 22.03.2011
Сообщений: 1,047
Завершенные тесты: 2
11.04.2013, 18:47
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <string>
#include <iostream>
 
class File
  {
  public:
    File()
      {
      std::cout << "File construct was called" << std::endl;
      }
    File(const std::string& path) : _path(path)
      {
      std::cout << "File overload construct was called. Path is " << _path << std::endl;
      open();
      }
    virtual ~File()
      {
      if (_is_open)
        close();
      std::cout << "File overload construct was called. Path is " << _path << std::endl;
      }
 
    virtual bool open()
      {
      if (_is_open)
        return true;
 
      _is_open = true;
      std::cout << "File open was called" << std::endl;
      }
 
    virtual void close()
      {
      _is_open = false;
      std::cout << "File close was called" << std::endl;
      }
    
    std::string path() const
      {
      return _path;
      }
 
    virtual void read(char& c)
      {
      if (!_is_open)
        return;
 
      std::cout << "File read char was called" << std::endl;
      }
    
    virtual void read(std::string& str)
      {
      if (!_is_open)
        return;
 
      std::cout << "File read string was called" << std::endl;
      }
 
  private:
    bool  _is_open;
    std::string _path;
  };
 
struct MyData { int count; };
 
class SpecialFile : public File
  {
  public:
    SpecialFile() : data(new MyData)
      {
      }
 
    SpecialFile(const std::string& path) : File(path), data(new MyData)
      {
      }
 
    ~SpecialFile()
      {
      delete data;
      }
 
    bool open()
      {
      bool ok = File::open();
      std::cout << "SpecialFile open was called" << std::endl;
 
      return ok;
      }
 
    void close()
      {
      File::close();
      std::cout << "SpecialFile close was called" << std::endl;
      }
 
    void read(std::string& str)
      {
      File::read(str);
 
      if (str == "special")
        data->count += 1;
 
      std::cout << "SpecialFile read string was called" << std::endl;
      }
 
  private:
    MyData *data;
  };
 
int main()
  {
  File *p_file = new SpecialFile("task.in");
 
  std::string str;
  p_file->read(str);
 
  return 0;
  }
Это набросок. Продолжить не составит труда, можно еще и пимпл прикрутить на рзные системы
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru