Случайный афоризм
Большая библиотека скорее рассеивает, чем получает читателя.Гораздо лучше ограничиться несколькими авторами, чем необдуманно читать многих. (Сенека Луций Анней (Младший))
 
новости
поиск по автору
поиск по тематике
поиск по ключевому слову
проба пера
энциклопедия авторов
словарь терминов
программы
начинающим авторам
ваша помощь
о проекте
Книжный магазин
Главная витрина
Книги компьютерные
Книги по психологии
Книги серии "Для чайников"
Книги по лингвистике
ЧАВо
Разные Статьи
Статьи по литературе

Форма пользователя
Логин:
Пароль:
регистрация
 детектив



 драмма



 животные



 история



 компьютерная документация



 медицина



 научно-популярная



 очередная история



 очерк



 повесть



 политика



 поэзия и лирика



 приключения



 психология



 религия



 студенту



 технические руководства



 фантастика



 философия и мистика



 художественная литература



 энциклопедии, словари



 эротика, любовные романы



в избранноеконтакты

Параметры текста
Шрифт:
Размер шрифта: Высота строки:
Цвет шрифта:
Цвет фона:

  }

  И,  наконец,  нам  нужно  обеспечить  множество  операций,  чтобы
пользователь  мог   осуществлять  цикл  по  множеству  в  некотором
порядке, поскольку  представление intset  от  пользователя  скрыто.
Множество внутренней  упорядоченности не имеет, поэтому мы не можем
просто дать  возможность обращаться  к вектору (завтра я, наверное,
реализую intset по-другому, в виде связанного списка).
  Дается три  функции: iterate()  для инициализации  итерации, ok()
для проверки,  есть ли  следующий элемент, и next() для того, чтобы
взять следующий элемент:

  class intset {
      // ...
      void iterate(int& i)        { i = 0; }
      int ok(int& i)              { return iiterate(var);
      while (set->ok(var)) cout << set->next(var) << "\n";
  }

Другой способ задать итератор приводится в #6.8.


                           Глава 6

                        Перегрузка Операций

                                             Здесь водятся Драконы!
                                                  - старинная карта

  В этой  главе описывается  аппарат,  предоставляемый  в  C++  для
перегрузки операций.  Программист может  определять смысл  операций
при  их   применении  к   объектам  определенного   класса.   Кроме
арифметических,  можно   определять  еще   и  логические  операции,
операции сравнения,  вызова ()  и индексирования  [], а также можно
переопределять присваивание и инициализацию. Можно определить явное
и  неявное   преобразование  между  определяемыми  пользователем  и
основными типами.  Показано, как  определить класс, объект которого
не может  быть никак  иначе  скопирован  или  уничтожен  кроме  как
специальными определенными пользователем функциями.

     6.1 Введение

  Часто  программы   работают   с   объектами,   которые   фвляются
конкретными  представлениями  абстрактных  понятий.  Например,  тип
данных  int   в  C++  вместе  с  операциями  +,  -,  *,  /  и  т.д.
предоставляет  реализацию  (ограниченную)  математического  понятия
целых  чисел.  Такие  понятия  обычно  включают  в  себя  множество
операций, которые  кратко, удобно  и привычно представляют основные
действия над  объектами. К  сожалению, язык  программирования может
непосредственно поддерживать  лишь очень малое число таких понятий.
Например, такие  понятия,  как  комплексная  арифметика,  матричная
алгебра, логические сигналы и строки не получили прямой поддержки в
C++.  Классы   дают  средство   спецификации  в  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 : 119 : 120 : 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : 129 : 130 : 131 : 132 : 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : 143 : 144 : 145 : 146 : 147 : 148 : 149 : 150 : 151 : 152 : 153 : 154 : 155 : 156 : 157 : 158 : 159 : 160 : 161 : 162 : 163 : 164 : 165 : 166 : 167 : 168 : 169 : 170 : 171 : 172 : 173 : 174 : 175 : 176 : 177 : 178 : 179 : 180 : 181 : 182 : 183 : 184 : 185 : 186 : 187 : 188 : 189 : 190 : 191 : 192 : 193 : 194 : 195 : 196 : 197 : 198 : 199 : 200 : 201 : 202 : 203 : 204 : 205 : 206 : 207 : 208 : 209 : 210 : 211 : 212 : 213 : 214 : 215 : 216 : 217 : 218 : 219 : 220 : 221 : 222 : 223 : 224 : 225 : 226 : 227 : 228 : 229 : 230 : 231 : 232 : 233 : 234 : 235 : 236 : 237 : 238 : 239 : 240 : 241 : 242 : 243 : 244 : 245 : 246 : 247 : 248 : 249 :
главная наверх

(c) 2008 Большая Одесская Библиотека.