Освой самостоятельно С++ за 21 день.
Шрифт:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main
{
int value = 0;
cout << "So, how many eggs did you say you wanted?" << endl;
cin >> value;
cout << value << " eggs, sunny-side up!" << endl;
return(0);
}
Выполнение этой программы приведет к следующему выводу:
So, how many eggs did you say you wanted?
4
4 eggs, sunny-side up!
В качестве альтернативы можно явно обращаться к идентификаторам, объявленным в пространстве
#include <iostream>
int main
{
int value = 0;
std::cout << "How many eggs did you want?" << std::endl;
std::cin >> value;
std::cout << value << " eggs, sunny-side up!" << std::endl;
return(0);
}
Программа выведет следующие данные:
How many eggs did you want?
4
4 eggs, sunny-side up!
Такой подход вполне годится для небольшой программы, но в больших приложениях будет довольно сложно проследить за всеми явными обращениями к идентификаторам пространства имен. Только представьте себе: вам придется добавлять std:: для каждого имени из стандартной библиотеки!
Резюме
Создать пространство имени так же просто, как описать класс. Есть несколько различий, но они весьма незначительны. Во-первых, после закрывающей фигурной скобки пространства имен не следует точка с запятой. Во-вторых, пространство имен всегда открыто, в то время как класс закрыт. Это означает, что вы можете продолжить объявление пространства имен в других файлах или в разных местах одного файла.
Вставлять в пространство имен можно все, что подлежит объявлению. Создавая классы для своей будущей библиотеки, вам следует взять на вооружение средство пространства имен. Объявленные внутри пространства имен функции должны определяться за его пределами. Благодаря этому интерфейс программы отделяется от ее выполнения.
Можно вкладывать одно пространство имен в другое. Однако не забывайте, что при обращении к членам внутреннего пространства имен необходимо явно указывать имена внешнего и внутреннего пространств.
Для открытия доступа ко всем членам пространства имен в текущей области видимости используется оператор using. Однако в результате этого слишком много идентификаторов могут получить глобальную видимость, что чревато конфликтами имен. Поэтому использование данного оператора не относится к правилам хорошего тона, особенно при работе со стандартными библиотеками. Вместо этого воспользуйтесь ключевым словом using при объявлении в программе идентификаторов из пространства имен.
Ключевое слово using в объявлении идентификатора используется для открытия доступа в текущей области видимости только к отдельному идентификатору из пространства имен, что существенно снижает вероятность возникновения конфликтов имен.
Псевдонимы пространств имен аналогичны оператору typedef. С их помощью можно создавать дополнительные имена для именованных пространств, что оказывается весьма полезным, если исходное имя длинное и неудобное.
Неименованное пространство может содержаться в каждом файле. Как следует из названия, это пространство без имени. Описав неименованное пространство имен с помощью ключевого слова namespace, можно использовать одноименные идентификаторы в разных файлах программы. Благодаря неименованному пространству имена переменных становятся локальными для текущего файла. Неименованные пространства имен рекомендуется использовать вместо ключевого слова static.
В стандартной
библиотеке C++ используется пространство имен std. Однако избегайте использования оператора using, открывающего доступ ко всем идентификаторам стандартной библиотеки. Воспользуйтесь лучше объявлениями с ключевым словом using.Вопросы и ответы
Обязательно ли использовать пространства имен?
Нет, вы можете писать простые программы и без помощи пространств имен. Просто убедитесь, что вы используете старые стандартные библиотеки (например, #include <string.h>), а не новые (например, #include <cstring.h>).
Каковы отличия между двумя способами использования ключевого слова using?
Ключевое слово using можно использовать как оператор и как спецификатор описания. В первом случае открывается доступ ко всем идентификаторам пространства имен. Во втором — доступ можно открыть только для отдельных идентификаторов.
Что такое неименованные пространства имен и зачем они нужны?
Неименованными называются пространства имен, для которых не задано собственное имя. Они используются для защиты наборов идентификаторов в разных файлах одной программы от возможных конфликтов имен. Идентификаторы неименованных пространств не могут использоваться за пределами области видимости их пространства имен.
Коллоквиум
Контрольные вопросы
1. Можно ли использовать идентификаторы, объявленные в пространстве имен, без применения ключевого слова using?
2. Назовите основные отличия между именованными и неименованными пространствами имен.
3. Что такое стандартное пространство имен std?
Упражнения
1. Жучки: найдите ошибку в следующем коде:
#include <iostream>
int main
{
cout << "Hello world!" << end;
return 0;
}
2. Перечислите три способа устранения ошибки, найденной в коде упражнения 1.
День 18-й. Анализ и проектирование объектно-ориентированных программ
Углубившись в синтаксис C++, легко упустить из виду, как и зачем используются различные подходы и средства программирования. Сегодня вы узнаете:
• Как проводить анализ проблем и поиск решений, основываясь на подходах объектно-ориентированного программирования
• Как проектировать эффективные объектно-ориентированные программы для нахождения оптимальных решений поставленных задач
• Как использовать унифицированный язык моделирования (UML) для документирования анализа и проектирования
Являеться ли C++ объектно-ориентированным языком программирования
Язык C++ был создан как связующее звено между новыми принципами объектно- ориентированного программирования и одним из самых популярных в мире языком программирования С для разработки коммерческих программ. Для реализации назревших идей объектного программирования требовалась разработка надежной и эффективной среды программирования.
Язык С был разработан как нечто среднее между языками высокого уровня для бизнес- приложений, такими как COBOL, и работающим на уровне "железа", высокоэффективным, но трудным в использовании языком ассемблер. Язык С разрабатывался для реализации структурного программирования, при котором решение задачи разбивается на более мелкие рутинные единицы повторяющихся действий, называемых процедурами.