Пространства имен (Namespaces)
Пространства имен используются для логической группировки связанных функций, классов и переменных, чтобы избежать конфликтов имен.
namespace MyNamespace {
void myFunction() {
std::cout << "Hello from MyNamespace!" << std::endl;
}
}
Глобальная область видимости
Глобальная область видимости охватывает весь файл и все функции в нем. Глобальные переменные и функции объявляются вне всех функций и классов.
int globalVar = 10;
void globalFunction() {
std::cout << "Hello from globalFunction!" << std::endl;
}
using
Объявления
using
объявления позволяют упростить доступ к членам пространств имен, избегая необходимости постоянно указывать полное имя пространства имен.
using namespace MyNamespace;
int main() {
myFunction(); // вместо MyNamespace::myFunction()
return 0;
}
Можно также использовать using
для отдельных элементов:
using MyNamespace::myFunction;
int main() {
myFunction();
return 0;
}
Особенности перегрузки функций в пространстве имен
Перегрузка функций в пространстве имен позволяет иметь несколько функций с одним и тем же именем, но с различными параметрами.
namespace MyNamespace {
void myFunction(int x) {
std::cout << "Function with int: " << x << std::endl;
}
void myFunction(double x) {
std::cout << "Function with double: " << x << std::endl;
}
}
int main() {
MyNamespace::myFunction(5); // Вызовет myFunction(int)
MyNamespace::myFunction(3.14); // Вызовет myFunction(double)
return 0;
}
Перегруженные функции должны отличаться сигнатурами (типами и/или количеством параметров). Это позволяет компилятору различать их при вызове.