моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Приветствую всех в блоге Pirate Cat Ou——
После долгого перерыва продолжим усердно учиться!
Оглавление
Значение существования пространства имен:
Определение пространства имен:
Использование пространства имен:
В C/C++ существует большое количество переменных, функций и классов, которые необходимо изучить позже. Имена этих переменных, функций и классов будут существовать в глобальной области видимости, что может вызвать множество конфликтов.Целью использования пространств имен является локализация имен идентификаторов во избежание конфликтов имен или загрязнения имен. Ключевое слово namespace, по-видимому, решает эту проблему.
Короче говоря, когда в одном проекте имеется несколько переменных с одинаковым именем, это может предотвратить конфликты имен или загрязнение имен, а также облегчить различие. Можно сказать, что он незаменим при разработке масштабных проектов.
Пространство имен — это ключевое слово пространства имен. Добавьте имя пространства имен после ключевого слова и добавьте {}, чтобы ограничить область действия.
namespace hdmo { int a = 1; }Уведомление: Нет необходимости добавлять ' ; ' после последнего ' }' пространства имен, которое отличается от структуры и похоже на функцию.
Суть пространства имен заключается в том, что мы создаем домен, независимый от глобальной области видимости. Точно так же, как каждая функция имеет область видимости, область действия параметров в каждой функции находится в пределах области видимости функции.То же самое касается пространств имен Each.Область действия функций, переменных и т. д. в пространстве имен находится в пределах ограниченной области пространства имен и должна использоваться путем вызова пространства имен., но следует отметить, чтоФункциональные переменные в пространстве имен и т. д. имеют глобальный жизненный цикл.
Пространство имен может быть определено только в глобальной области, а также может быть вложенным.
В одном проекте пространства имен с одинаковым именем будут считаться одним и тем же пространством имен.
namespace hdmo { int a = 1; } namespace hdmo { int b = 1; }В настоящее время два hdmo представляют одно и то же пространство имен.
Стандартная библиотека C++ хранится в пространстве имен std (стандарт), чтобы предотвратить конфликты с функциями других языков. Вот почему программы C++ в основном содержат.
using namespace std;
Просто чтобы включить стандартную библиотеку C++.
Поскольку пространство имен является доменом, если вы хотите использовать его функциональные переменные и другое содержимое извне, вам необходимо использовать оператор, подобный структуре, для выполнения этой операции.
Оператор вызова пространства имен состоит из двух двоеточий::
#include <stdio.h> namespace hdmo { int a = 1; } int a = 2; int main() { printf("%dn", a); printf("%dn", ::a); printf("%dn", hdmo::a); return 0; }
Из результатов вывода мы можем знать, что: когда передняя часть :: пуста, переменные глобальной области вызываются по умолчанию.
Существует три способа использования переменных, функций и т. д. в пространстве имен:
1.разовое посещение: Используйте :: для индивидуального доступа к переменным или функциям в пространстве имен, что является самым безопасным способом его использования;
2.Одно расширение : используйте использование только для расширения переменной или функции. После расширения ее область действия становится глобальной и больше не ограничивается пространством имен. Рекомендуется использовать этот метод в обычных условиях без конфликтов.
3.Полностью расширен: Непосредственно расширять все указанные пространства имен. Не рекомендуется использовать в проектах. Риск конфликта высок, и его можно использовать в небольших программах (стандартная библиотека стандартной библиотеки C++ полностью расширена, поэтому при использовании cin и cout). , Нет необходимости добавлять префикс std::)
В языке C нашими операторами ввода и вывода являются scanf и printf соответственно. C++ также совместим с операторами ввода и вывода языка C, но также имеет свои собственные функции ввода и вывода, а именно cin и cout.
Чтобы использовать функции cin и cout, вы должны включить<iostream>Стандартная библиотека потоков ввода и вывода, которая должна включать стандартную библиотеку функций C++.
- #include <iostream>
- using namespace std;
При использовании cin для входа используйте '>>';
При использовании cout для вывода используйте '<<'.
<< — оператор вставки потока, >> — оператор извлечения потока (<< и >> также представляют операторы сдвига влево и вправо в языке C)
- #include <iostream>
- using namespace std;
- int main()
- {
- int a = 0;
- cin >> a;
- cout << a << endl;
- printf("%dn", a);
- return 0;
- }
Сначала мы можем просто понимать endl как разрыв строки 'n'; основная часть не будет подробно объясняться и будет добавлена в будущих исследованиях.
Из приведенного выше кода мы видим, что cin и cout не используют %d, %c и т. д., например, scanf и printf, для управления форматом ввода и вывода переменных. Это потому, что.cin и cout могут автоматически определять типы переменных и данных., что является относительно удобным местом.
В среде VS2022 приведенный выше код не содержит<stdio.h> , вы также можете использовать функции scanf и printf, потому что в VS<iostream>косвенно включено<stdio.h>, поэтому его можно использовать напрямую, но, возможно, его придется включить в другие среды компиляции.<stdio.h> .
Если вы хотите добиться таких операций, как точность управления, рекомендуется напрямую использовать методы ввода и вывода языка C. Реализовать эту операцию на C++ будет сложнее.
Следует отметить, что scanf и printf работают быстрее, чем cin и cout. В соревнованиях scanf и printf можно использовать непосредственно в случае зависания времени работы. Следующий код может повысить эффективность cin и cout, но в этой статье нет. объяснение еще.
- #include <iostream>
- using namespace std;
- int main()
- {
- // 在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码
- // 可以提⾼C++IO效率
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- return 0;
- }
Параметры по умолчанию предназначены для присвоения параметрам функции значения по умолчанию при объявлении или определении функции. Когда мы вызываем функцию, если параметр по умолчанию не передает значение, будет использоваться определенное значение по умолчанию. будет использовано значение.
Параметры по умолчанию делятся на полные по умолчанию и полупо умолчанию; полный по умолчанию означает, что всем формальным параметрам присваиваются значения по умолчанию, а полупо умолчанию означает, что некоторым формальным параметрам присваиваются значения по умолчанию. А C++ предусматривает, что параметры полустандартного значения должны присваиваться по умолчанию последовательно справа налево и не могут переходить к значениям по умолчанию через определенные промежутки времени.
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
- //全缺省
- int Fun1(int x = 0, int y = 0)
- {
- return x + y;
- }
- //半缺省
- int Fun2(int x, int y = 0)
- {
- return x + y;
- }
- }
-
- int main()
- {
- cout << hdmo::Fun1() << endl;//全缺省可以不传参
- cout << hdmo::Fun1(1) << endl;
- cout << hdmo::Fun1(1,1) << endl;
- /*
- cout << hdmo::Fun2() << endl;//半缺省不能不传参
- */
- cout << hdmo::Fun2(2) << endl;
- cout << hdmo::Fun2(2,2) << endl;
- return 0;
- }
Результат приведенного выше кода:
Полустандартный режим должен обеспечивать определение и непрерывность параметров по умолчанию справа налево, с нормальными параметрами слева и параметрами по умолчанию справа.
Перегрузка функции означает, что одновременно существует несколько функций с одинаковым именем. Одно и то же имя функции одновременно представляет несколько функций, что является перегрузкой.
Разница между ними определяется типом и номером параметра и не имеет никакого отношения к типу возвращаемого значения.Две функции с одинаковым именем, которые имеют только разные типы возвращаемых значений, не могут быть перегружены.。
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
-
- int Add(int x, int y)
- {
- return x + y;
- }
- double Add(double x, int y)
- {
- return x + y;
- }
- double Add(int x, double y)
- {
- return x + y;
- }
- double Add(double x, double y)
- {
- return x + y;
- }
- }
- int main()
- {
- using hdmo::Add;
- cout << Add(1, 1) << endl;
- cout << Add(1.1, 1) << endl;
- cout << Add(1, 1.1) << endl;
- cout << Add(1.1, 1.1) << endl;
- return 0;
- }
Результат:
Из приведенного выше кода мы видим, что использование перегрузки может сделать использование функций более удобным. В языке C для достижения вышеуказанного эффекта нам нужно использовать четыре разных имени функции для определения четырех функций и использовать их по-разному при использовании. С помощью перегрузки в C++ мы можем унифицировать все функции сложения, поскольку нет необходимости различать одно имя. при использовании просто используйте его напрямую, что очень удобно.
На этом статья об основах начала работы с C++ закончится. Позже мы продолжим объяснять другие базовые знания. Приглашаем всех продолжать приходить и давать нам советы.
Если у вас есть недостатки, вы можете указать на них в личных сообщениях или в комментариях!
Домашняя страница:Pirate Cat Ou-CSDN Блог
Вот маленькая чайка! Увидимся в следующий раз~(*¯︶¯*)~