命名空间与模块
命名空间
命名空间 用于组织代码并防止命名冲突。它允许开发者将相关的代码组合到同一个空间中,避免在使用不同库或组件时可能发生的命名冲突。
#include <iostream>
// 第一个名为 'Math' 的命名空间,包含一个名为 'operation' 的函数
namespace Math {
int operation(int a, int b) {
return a + b;
}
}
// 第二个名为 'Utility' 的命名空间,包含一个名为 'operation' 的函数
namespace Utility {
int operation(int a, int b) {
return a * b;
}
}
int main() {
// 通过使用命名空间解决命名冲突
int sum = Math::operation(3, 4);
int product = Utility::operation(5, 2);
// 显示结果
std::cout << "Sum: " << sum << std::endl;
std::cout << "Product: " << product << std::endl;
return 0;
}
模块
大多数 C++ 项目由用多个源文件(更确切地说,翻译单元)组成,因此经常需要在这些单元之间共享声明和定义。为此,传统 C++ 广泛使用头文件来引入共享的声明和定义。最经典的例子就是标准库,其声明可以通过包含相应的头文件提供。
C++20 引入了模块(Modules)。这是一个现代解决方案,将 C++ 库和程序转化为组件,并借此消除、减少了许多与使用头文件相关的问题,还可以缩短编译时间。
// 模块接口文件(module.h)
export module mymodule;
export int add(int a, int b);
// 模块实现文件(module.cpp)
module mymodule;
int add(int a, int b) {
return a + b;
}
// main.cpp
import mymodule;
int main() {
int result = add(3, 4);
return 0;
}
Loading...
> 此处输出代码运行结果