Вход/Регистрация
Программирование. Принципы и практика использования C++ Исправленное издание
вернуться

Страуструп Бьерн

Шрифт:

• Массивы и указатели.

• Макросы.

• Оператор

typedef
.

• Оператор

sizeof
.

• Операторы приведения типов.

В этой главе будет приведено несколько примеров использования таких средств.

Я ввел в язык С++ комментарии
//
, унаследованные от его предшественника, языка BCPL, когда мне надоело печатать комментарии вида
/* ... */
. Комментарии
//
приняты в большинстве диалектов языка, включая версию C99, поэтому их можно использовать совершенно безопасно. В наших примерах мы будем использовать комментарии вида
/* ... */
исключительно для того, чтобы показать, что мы пишем программу на языке C. В языке C99 реализованы некоторые возможности языка C++ (а также некоторые возможности, несовместимые с языком С++), но мы будем придерживаться версии C89, поскольку она используется более широко.

27.1.3. Стандартная библиотека языка С

Естественно, возможности библиотек языка С++, зависящие от классов и шаблонов, в языке С недоступны. Перечислим некоторые из них.

• Класс

vector
.

• Класс

map
.

• Класс

set
.

• Класс

string
.

• Алгоритмы библиотеки STL: например,

sort
,
find
и
copy
.

• Потоки ввода-вывода

iostream
.

• Класс

regex
.

Из-за этого библиотеки языка С часто основаны на массивах, указателях и функциях. К основной части стандартной библиотеки языка С относятся следующие заголовочные файлы.

•

<stdlib.h>
. Общие утилиты (например,
malloc
и
free
; см. раздел 27.4).

•

<stdio.h>
. Стандартный механизм ввода-вывода; см. раздел 27.6.

•

<string.h>
. Манипуляции со строками и памятью в стиле языка C; см. раздел 27.5.

•

<math.h>
. Стандартные математические функции для операций над числами с плавающей точкой; см. раздел 24.8.

•

<errno.h>
. Коды ошибок математических функций из заголовочного файла
<math.h>
; см. раздел 24.8.

•

<limits.h>
. Размеры целочисленных типов; см. раздел 24.2.

•

<time.h>
. Функции даты и времени; см. раздел 26.6.1.

•

<assert.h>
. Условия для отладки (debug assertions); см. раздел 27.9.

•

<ctype.h>
. Классификация символов; см. раздел 11.6.

•

<stdbool.h>
. Булевы макросы.

Полное описание стандартной библиотеки языка С можно найти в соответствующем учебнике, например в книге K&R. Все эти библиотеки (и заголовочные файлы) также доступны и в языке С++.

27.2. Функции

В языке C есть несколько особенностей при работе с функциями.

• Может существовать только одна функция с заданным именем.

• Проверка типов аргументов функции является необязательной.

• Ссылок нет (а значит, нет и механизма передачи аргументов по ссылке).

• Нет функций-членов.

• Нет подставляемых функций (за исключением версии C99).

• Существует альтернативный синтаксис объявления функций.

Помимо этого, все остальное мало отличается от языка С++. Изучим указанные отличия по отдельности.

27.2.1. Отсутствие перегрузки имен функций

Рассмотрим следующий пример:

void print(int); /* печать целого числа */

void print(const char*); /* печать строки */ /* ошибка! */

Второе объявление является ошибкой, потому что в программе, написанной на языке С, не может быть двух функций с одним и тем же именем. Итак, нам необходимо придумать подходящую пару имен.

void print_int(int); /* печать целого числа int */

void print_string(const char*); /* печать строки */

Иногда это свойство называют преимуществом: теперь вы не сможете случайно использовать неправильную функцию для вывода целого числа! Очевидно, что нас такой аргумент убедить не сможет, а отсутствие перегруженных функций усложняет реализацию идей обобщенного программирования, поскольку они основаны на семантически похожих функциях, имеющих одинаковые имена.

27.2.2. Проверка типов аргументов функций

  • Читать дальше
  • 1
  • ...
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: