c++++ 中的命名空间是一种将代码组织成逻辑组的方法,并通过为函数、类和变量等标识符创建不同的范围来防止名称冲突。它有助于管理库并避免大型项目中的命名冲突。
让我们用一个类比来理解这一点:
书店的比喻
书籍:
想象一下一家书店,里面有各种主题的书籍。每本书都有一个唯一的标识符,即类别号,以将其与其他书籍区分开来。在这个比喻中:
书籍就像c++中的函数、类和变量。
类别编号就像命名空间。
部分:
书店分为不同的部分,每个部分包含特定主题的书籍。例如:
数学部分
文学部分
故事区
现在让我们适应这个例子:
std 命名空间作为一个节
将 std 命名空间视为该书店中的标准部分。它有这样的书:
iostream用于输入和输出
向量用于动态数组
string 用于文本字符串
要使用 std 部分的书:
#include <iostream>
int main() {
std::cout
<p>上面的代码类似于说,<strong>“我想读这本书<br>
cout 和 endl 来自书店的 std 部分”</strong></p>
<h2>
仅来自标准部分的书籍:
</h2>
<p>如果你觉得每次从std借书区借书都要指定栏目名称很繁琐,你可以说:</p>
<p><strong>“我主要从std部分借书”</strong><br></p>
<pre class="brush:php;toolbar:false">#include <iostream>
using namespace std;
int main() {
cout
<hr>
<h2>
c++ 中的其他部分/命名空间:
</h2>
<h2>
提升命名空间:
</h2>
<p>boost 部分包含扩展<a style="color:#f60; text-decoration:underline;" href="https://www.php.cn/zt/74427.html" target="_blank">标准库</a>功能的高级书籍。<br>
书籍:智能指针、正则表达式、线程等<br></p>
<pre class="brush:php;toolbar:false">#include <boost>
#include <iostream>
int main() {
boost::shared_ptr<int> ptr(new int(10));
std::cout
<h2>
自定义命名空间:
</h2>
<pre class="brush:php;toolbar:false">namespace Drawing {
void drawCircle() {
std::cout
<h2>
知识
</h2>
<p><strong>库:</strong> <vector>、<iostream>、<string> 等<br><strong>命名空间:</strong> std、boost 等<br><strong>功能:</strong>cout、cin等</string></iostream></vector></p>
<hr>