0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#Руководства</a></p>
1
<p><a>#Руководства</a></p>
2
<ul><li>10 июн 2020</li>
2
<ul><li>10 июн 2020</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Разбираемся, как ускорить работу с кодом в несколько раз, используя готовые решения.</p>
4
</ul><p>Разбираемся, как ускорить работу с кодом в несколько раз, используя готовые решения.</p>
5
<p> vlada_maestro / shutterstock</p>
5
<p> vlada_maestro / shutterstock</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7
<p>Это восьмая часть из серии статей<strong>"Глубокое погружение в C++"</strong>. В <a>прошлой статье</a>мы узнали, как хранить данные в массивах. Сегодня - ещё интереснее.</p>
7
<p>Это восьмая часть из серии статей<strong>"Глубокое погружение в C++"</strong>. В <a>прошлой статье</a>мы узнали, как хранить данные в массивах. Сегодня - ещё интереснее.</p>
8
<p>Недавно<strong></strong>мы говорили о том, что многие функции уже написаны другими разработчиками и помещены в специальные библиотеки. Если такая библиотека входит в состав языка или находится в открытом доступе, то вы можете использовать все её возможности.</p>
8
<p>Недавно<strong></strong>мы говорили о том, что многие функции уже написаны другими разработчиками и помещены в специальные библиотеки. Если такая библиотека входит в состав языка или находится в открытом доступе, то вы можете использовать все её возможности.</p>
9
<p>Это очень удобно, и многие специально пишут универсальные библиотеки, которые пригодятся в самых разных проектах. Давайте разберёмся с библиотеками подробнее и научимся создавать свои.</p>
9
<p>Это очень удобно, и многие специально пишут универсальные библиотеки, которые пригодятся в самых разных проектах. Давайте разберёмся с библиотеками подробнее и научимся создавать свои.</p>
10
<p><strong>Пространство имён</strong>(англ.<em>namespace</em>) - это группа взаимосвязанных функций, переменных, констант, классов, объектов и других компонентов программы.</p>
10
<p><strong>Пространство имён</strong>(англ.<em>namespace</em>) - это группа взаимосвязанных функций, переменных, констант, классов, объектов и других компонентов программы.</p>
11
<p>С самого начала изучения C++ мы используем команду<em>std: cout</em>, чтобы выводить данные в терминал. На самом деле команда называется просто<em>cout</em>, а <em>std</em> - это пространство имён, в котором она находится.</p>
11
<p>С самого начала изучения C++ мы используем команду<em>std: cout</em>, чтобы выводить данные в терминал. На самом деле команда называется просто<em>cout</em>, а <em>std</em> - это пространство имён, в котором она находится.</p>
12
<p>Пространства имён нужны, чтобы логически связывать части программы. Например, математические функции, физические, бухгалтерские и так далее.</p>
12
<p>Пространства имён нужны, чтобы логически связывать части программы. Например, математические функции, физические, бухгалтерские и так далее.</p>
13
<p>Вот пример создания пространства имён:</p>
13
<p>Вот пример создания пространства имён:</p>
14
#include <iostream> //После ключевого слова namespace указываем название пространства имён namespace mynames { //Всё, что находится внутри этого блока, относится к mynames const double Pi = 3.14; int sum(int a, int b) { return a + b; } } int main() { //Для вызова функции sum нужно сначала указать пространство имён int a = mynames::sum(5, 12); std::cout << "a = " << a << "\n"; //Так же при использовании переменных и констант std::cout << "Pi = " << mynames::Pi << "\n"; }<p>Мы объединяем в группу несколько разных команд и избегаем конфликтов имён. Это нужно, когда в какой-то из подключённых вами библиотек уже есть функция, например<em>sum ()</em>. По пространству имён программа поймёт, какая именно функция вам нужна.</p>
14
#include <iostream> //После ключевого слова namespace указываем название пространства имён namespace mynames { //Всё, что находится внутри этого блока, относится к mynames const double Pi = 3.14; int sum(int a, int b) { return a + b; } } int main() { //Для вызова функции sum нужно сначала указать пространство имён int a = mynames::sum(5, 12); std::cout << "a = " << a << "\n"; //Так же при использовании переменных и констант std::cout << "Pi = " << mynames::Pi << "\n"; }<p>Мы объединяем в группу несколько разных команд и избегаем конфликтов имён. Это нужно, когда в какой-то из подключённых вами библиотек уже есть функция, например<em>sum ()</em>. По пространству имён программа поймёт, какая именно функция вам нужна.</p>
15
<p>Если же вы хотите сократить код, то используйте команду<em>using</em>:</p>
15
<p>Если же вы хотите сократить код, то используйте команду<em>using</em>:</p>
16
using namespace std; using namespace mynames; int main() { int a = sum(5, 12); cout << "a = " << a << "\n"; cout << "Pi = " << Pi << "\n"; }<p>В данном случае команда говорит, что вам нужны имена из <em>mynames</em>и <em>std</em>, поэтому никакой ошибки выведено не будет.</p>
16
using namespace std; using namespace mynames; int main() { int a = sum(5, 12); cout << "a = " << a << "\n"; cout << "Pi = " << Pi << "\n"; }<p>В данном случае команда говорит, что вам нужны имена из <em>mynames</em>и <em>std</em>, поэтому никакой ошибки выведено не будет.</p>
17
<p>Также после<em>using</em>можно указать не целое пространство имён, а только отдельную функцию или переменную:</p>
17
<p>Также после<em>using</em>можно указать не целое пространство имён, а только отдельную функцию или переменную:</p>
18
//Подключить пространство имён std using namespace std; //Подключить функцию sum() из пространства имён mynames using mynames::sum; int main() { int a = sum(5, 12); cout << "a = " << a << "\n"; cout << "Pi = " << mynames::Pi << "\n"; }<p>Пространство имён из примера выше можно перенести в отдельный файл, чтобы потом подключить его к другой программе и избавиться от дополнительного кода в основном файле.</p>
18
//Подключить пространство имён std using namespace std; //Подключить функцию sum() из пространства имён mynames using mynames::sum; int main() { int a = sum(5, 12); cout << "a = " << a << "\n"; cout << "Pi = " << mynames::Pi << "\n"; }<p>Пространство имён из примера выше можно перенести в отдельный файл, чтобы потом подключить его к другой программе и избавиться от дополнительного кода в основном файле.</p>
19
<p>Для этого создайте файл заголовков - сохраните код с расширением<em>.h</em>, например<em>mylib.h</em>:</p>
19
<p>Для этого создайте файл заголовков - сохраните код с расширением<em>.h</em>, например<em>mylib.h</em>:</p>
20
namespace mymath { const double Pi = 3.14; int sum(int a, int b) { return a + b; } int pow(int base, int exponent) { int result = base; for(int i = 1; i < exponent; i++) { result *= base; } return result; } }<p>Здесь нет функции<em>main ()</em>, потому что этот код - не самостоятельная программа, а библиотека для других программ. Следовательно, точка входа здесь не нужна. Также мы не подключаем<em>iostream</em>, потому что не собираемся ничего выводить, но вы можете добавить в свой заголовок любые другие файлы.</p>
20
namespace mymath { const double Pi = 3.14; int sum(int a, int b) { return a + b; } int pow(int base, int exponent) { int result = base; for(int i = 1; i < exponent; i++) { result *= base; } return result; } }<p>Здесь нет функции<em>main ()</em>, потому что этот код - не самостоятельная программа, а библиотека для других программ. Следовательно, точка входа здесь не нужна. Также мы не подключаем<em>iostream</em>, потому что не собираемся ничего выводить, но вы можете добавить в свой заголовок любые другие файлы.</p>
21
//Подключаем в нашу библиотеку две другие #include <iostream> #include <cmath> namespace math2 { void printPow(int base, int exponent) { //Обратите внимание, что функция pow(), которая находится в cmath, не относится ни к какому пространству имён //Точно так же вы можете создавать библиотеки без пространств имён int result = pow(base, exponent); std::cout << base << "^" << exponent << " = " << result << "\n"; } }<p>Поместите<em>mylib.h</em>в папку, где находится ваша программа. Затем добавьте в начало кода команду:</p>
21
//Подключаем в нашу библиотеку две другие #include <iostream> #include <cmath> namespace math2 { void printPow(int base, int exponent) { //Обратите внимание, что функция pow(), которая находится в cmath, не относится ни к какому пространству имён //Точно так же вы можете создавать библиотеки без пространств имён int result = pow(base, exponent); std::cout << base << "^" << exponent << " = " << result << "\n"; } }<p>Поместите<em>mylib.h</em>в папку, где находится ваша программа. Затем добавьте в начало кода команду:</p>
22
<p>Обратите внимание на двойные кавычки вместо угловых скобок: первые используются для локальных заголовков, а вторые - для системных.</p>
22
<p>Обратите внимание на двойные кавычки вместо угловых скобок: первые используются для локальных заголовков, а вторые - для системных.</p>
23
<p>Теперь вы можете использовать весь функционал из этой библиотеки:</p>
23
<p>Теперь вы можете использовать весь функционал из этой библиотеки:</p>
24
#include <iostream> #include "mylib.h" using namespace std; int main() { int base = 5; int exponent = 4; int result = mymath::pow(base, exponent); cout << base << "^" << exponent << " = " << result << "\n"; }<p>Вот что будет выведено:</p>
24
#include <iostream> #include "mylib.h" using namespace std; int main() { int base = 5; int exponent = 4; int result = mymath::pow(base, exponent); cout << base << "^" << exponent << " = " << result << "\n"; }<p>Вот что будет выведено:</p>
25
<p>Обратите внимание, что функция<em>pow</em>, как и другие математические функции, существует также и в библиотеке<em>cmath</em>.</p>
25
<p>Обратите внимание, что функция<em>pow</em>, как и другие математические функции, существует также и в библиотеке<em>cmath</em>.</p>
26
<p>Библиотеки и пространства имён - это полезные инструменты для каждого разработчика. В интернете есть готовые решения для любых задач, поэтому многие работодатели ищут специалистов, которые разбираются в определённой библиотеке.</p>
26
<p>Библиотеки и пространства имён - это полезные инструменты для каждого разработчика. В интернете есть готовые решения для любых задач, поэтому многие работодатели ищут специалистов, которые разбираются в определённой библиотеке.</p>
27
<p>Если вы часто работаете над однотипными проектами, можете написать для себя библиотеку и подключать её во все проекты, чтобы ускорить работу. Однако новичкам стоит стараться писать код каждый раз заново - так вы сможете его постоянно переосмысливать и замечать то, чего раньше не замечали.</p>
27
<p>Если вы часто работаете над однотипными проектами, можете написать для себя библиотеку и подключать её во все проекты, чтобы ускорить работу. Однако новичкам стоит стараться писать код каждый раз заново - так вы сможете его постоянно переосмысливать и замечать то, чего раньше не замечали.</p>
28
<a>Курс с трудоустройством: "Профессия Разработчик С++
с нуля + ИИ" Узнать о курсе</a>
28
<a>Курс с трудоустройством: "Профессия Разработчик С++
с нуля + ИИ" Узнать о курсе</a>