Шрифт:
То же самое можно сформулировать и иначе. Единственное различие заключается в том, что
Как обычно, имена параметров могут опускаться, поэтому возможен и третий вариант объявления
Обратите внимание на различия между круглыми скобками вокруг имени параметра (например, параметра
После небольшой разминки с объявлениями
Держитесь и постарайтесь не упасть. Перед вами объявление функции
• Первый параметр,
• Второй параметр не имеет имени. Он относится к типу указателя на функцию, которая вызывается без параметров и возвращает
Любопытно, не правда ли? Однако такая интерпретация соответствует одному из основных правил C++: все, что может интерпретироваться как указатель на функцию, должно интерпретироваться именно так. Каждый программист с опытом работы на C++ встречался с теми или иными воплощениями этого правила. Сколько раз вы встречались с такой ошибкой:
Вместо объекта класса
Все это по-своему интересно, однако мы нисколько не приблизились к поставленной цели: инициализировать объект
Именно так следует объявлять данные. Учитывая практическую полезность
К сожалению, не все компиляторы знают об этом. Из нескольких протестированных компиляторов почти половина соглашалась только на неправильное объявление
Более грамотный выход заключается в том, чтобы отказаться от модного использования анонимных объектов
Именованные объекты итераторов противоречат стандартному стилю программирования STL, но зато ваша программа будет однозначно восприниматься как компиляторами, так и людьми, которые с ними работают.
Совет 7. При использовании контейнеров указателей, для которых вызывался оператор new, не забудьте вызвать delete для указателей перед уничтожением контейнера
Контейнеры STL отличаются умом и сообразительностью. Они поддерживают итераторы для перебора как в прямом, так и в обратном направлении (