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

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



 драмма



 животные



 история



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



 медицина



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



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



 очерк



 повесть



 политика



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



 приключения



 психология



 религия



 студенту



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



 фантастика



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



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



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



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



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

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

  cout << "**" << hex(31) << hex(32,3) << "**";

интерпретируется как

  cout << "**" << hex(31,0) << hex(32,3) << "**";

и напечатает:

  ** 1f 20**

  Параметр по  умолчанию проходит  проверку типа  во время описания
функции и  вычисляется во  время ее  вызова. Задавать  параметр  по
умолчанию возможно только для последних параметров, поэтому

                             - стр 128 -

  int f(int, int =0, char* =0);    // ok
  int g(int =0, int =0, char*);    // ошибка
  int f(int =0, int, char* =0);    // ошибка

Заметьте, что  в  этом  контексте  пробел  между  *  и  =  является
существенным (*= является операцией присваивания):

  int nasty(char*=0);                // синтаксическая ошибка

     4.6.7 Перегрузка Имен Функций

  Как правило, давать разным функциям разные имена - мысль хорошая,
но  когда   некоторые  функции   выполняют  одинаковую  работу  над
объектами разных  типов, может  быть более удобно дать им одно и то
же имя.  Использование одного  имени  для  различных  действий  над
различными типами  называется перегрузкой  (overloading). Метод уже
используется для  основных  операций  C++:  у  сложения  существует
только одно  имя, +,  но его  можно применять для сложения значений
целых, плавающих  и указательных  типов. Эта идея легко расширяется
на  обработку   операций,  определенных   пользователем,  то  есть,
функций.  Чтобы   уберечь  программиста  от  случайного  повторного
использования имени,  имя может  использоваться более чем для одной
функции только если оно сперва описано как перегруженное. Например:

  overload print;
  void print(int);
  void print(char*);

  Что касается компилятора, единственное общее, что имеют функции с
одинаковым именем, это имя. Предположительно, они в каком-то смысле
похожи, но  в этом  язык ни стесняет программиста, ни помогает ему.
Таким образом,  перегруженные имена  функций -  это главным образом
удобство записи.  Это  удобство  значительно  в  случае  функций  с
общепринятыми  именами   вроде  sqrt,   print  и  open.  Когда  имя
семантически значимо,  как это имеет место  для операций вроде +, *
и <<  (#6.2) и  в  случае  конструкторов  (#5.2.4  и  #6.3.1),  это
удобство становится  существенным. Когда  вызывается  перегруженная
f(), компилятор  должен понять,  к какой  из  функций  с  именем  f
следует обратиться.  Это делается путем сравнения типов фактических
параметров с  типами формальных параметров всех функций с именем f.
Поиск  функции,   которую  надо   вызвать,  осуществляется  за  три
отдельных шага:
  [1] Искать функцию соответствующую точно, и использовать ее, если

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 Большая Одесская Библиотека.