Особенности, предназначенные в первую очередь для организации программ

(в добавление к классам):

1. шаблоны ;

2. встроенные функции ;

3. аргументы по умолчанию;

4. перегрузка функций ;

5. пространства имен;

6. явное разрешение области видимости (операция :: );

7. обработка исключений ;

8. определение типа во время выполнения.

Для определения того, каким компилятором должна компилироваться програм­ма — С или C++, — можно пользоваться макросом _cplusplus .

Заголовочные файлы.

Традиционно все заголовочные файлы имели расширение .h.

Таким образом, реали­зации C++ вводили заголовочные файлы, такие как <map.h> и <iostream.h>. Из сооб­ражений совместимости большинство реализаций по-прежнему так и делают.

Когда комитету по стандартам понадобились заголовочные файлы для новых вер­сий стандартных библиотек и для добавляемых возможностей библиотеки, имено­вание этих заголовочных файлов стало проблемой. Использование старых имен с расширением .h породило бы трудности с совместимостью.

И было решено для имен стандартных заголовочных файлов отказаться от суффикса .h. Он все равно избыто­чен, поскольку обозначение < > и так указывает, что речь идет об имени стандартного заголовочного файла.

Таким образом, стандартная библиотека предоставляет заголовочные файлы без расширения, такие как <iostream> и <тар>.

Объявления в этих файлах распо­лагаются в пространстве имен std. Устаревшие заголовочные файлы располагают свои объявления в глобальном пространстве имен и используют расширение h.

Пример:

#include<iostream>

Int main ()

{ std::cout« "Здравствуй, мир\\п"; }

Если не удается скомпилировать, используем традици­онную версию:

#include<iostream.h>

Int main ()

{ cout« "Здравствуй, мир \\ п"; }

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

Реализации C++, предшествовавшие стандарту, могут не иметь некото­рых частей стандартной библиотеки.

В большинстве из них будут потоки ввода/вы­вода, нешаблонный класс complex, различные строковые классы и стандартная биб­лиотека С. Однако могут отсутствовать ассоциативные массивы (тар), списки (list), valarray и т. д. В таких случаях пользуйтесь доступными библиотеками (как пра­вило, являющимися собственностью той или иной фирмы), которые бы позволили впоследствии перейти к стандарту при обновлении вашей реализации. Обычно луч­ше пользоваться нестандартными строками, списками и ассоциативными массивами, чем при отсутствии этих классов в стандартной библиотеке возвращаться к програм­мированию в стиле С.

Ранние реализации стандартной библиотеки были неполными.

Советы для реализации правильного кода из С в С++:

1. Для изучения C++ используйте самую полную из доступных вам реализа­ций стандартного C++;.

2. При преобразовании программы с С на C++ сначала убедитесь, что последовательно ис­пользуются объявления функций (прототипы) и стандартные заголовочные файлы.

3. При преобразовании программы с С на C++ переименуйте переменные С, которые совпа­дают с ключевыми словами C++; .

4. При преобразовании программы с С на C++ замените все вызовы

malloc ()на new.

5. При преобразовании программы с С на C++ нет неявного преобразования от типа int к перечислениям. При необходимости используйте явное преобразование типов.

6. Средства из пространства имен std определяются в заголовке без суффикса (т. е. std::cout объявлена в <iostream>).

Старые реализации содержат средства стандарт­ной библиотеки в глобальном пространстве имен, объявленные в заголовочных файлах с суффиксом h (т. е. ::cout объявлена в <iostream.h>).

7. Используйте <string> для доступа к std:<string> (<string.h> содержит функции для строк в стиле С).

8. Для каждого стандартного заголовочного файла языка С <X.h>, который помещает име­на в глобальное пространство имен, заголовочный файл <Х> помещает имена в про­странство имен std.

9. Многие системы содержат заголовочный файл "String.h", определяющий строковый тип. Отметим, что такие строки отличаются от типа string из стандартной библиотеки.

10. Предпочитайте стандартные средства нестандартным.

11. Используйте extern "С" при объявлении С-функции.

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

Язык Си был создан в AT&T’s Bell Laboratories начале 1970-х. В 1970-е язык программирования С пользовался невероятной популярностью. Множество университетов и организаций начали создание собственных вариантов языка, более подходящих для собственных нужд. Язык программирования С до стандартизации не обеспечивал встроенной функциональности (например отсутствовала операция ввода-вывода). С началом 1980-х проблемы совместимости между различными реализациями языка Си стали очевидными. Для поддержки функциональности требовалась стандартная библиотека языка С .

В 1983 году Американский национальный институт стандартов (ANSI) сформировал комитет для принятия стандарта языка С, известный как «ANSI С». Эта работа вылилась в создание так называемого стандарта C89 в 1989 году. Часть итогового стандарта была набором библиотек, названная Стандартная библиотека ANSI С.

Стандартную библиотеку функций языка С можно разделить на две категории:

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

2. функции, которые являются уникальными в рамках какой-либо системы программирования, или обеспечивают доступ к специфическим возможностям конкретной операционной системы, или связаны с конкретной архитектурой компьютера.

Функции первой категории образуют переносимое ядро библиотеки; программы, в которых используются только такие библиотечные функции, могут быть перенесены в другую систему программирования, другую операционную систему и/или на другой тип архитектуры компьютеров с наименьшими затратами. Плата за универсальность и переносимость — невозможность воспользоваться специфическими средствами, предоставляемыми конкретной вычислительной средой.

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

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

Стандарт ANSI.

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

Библиотека обеспечивает поддержку основного набора математических функций, обработку строк, конвертацию типов, файловый и консольный ввод-вывод.

Она не содержит стандартный набор «контейнерных типов» как стандартная библиотека шаблонов языка C++, компоненты для работы с графическим пользовательским интерфейсом (GUI), сетью и прочей разнообразной функциональности.

Главным преимуществом маленькой стандартной библиотеки является упрощение работы с окружением ANSI Си по сравнению с другими языками, а следовательно и упрощение портирования программ на языке Си на новые платформы.

Наши рекомендации