4.C++中程序中的命名空间

ops/2024/9/23 0:57:10/

咱们在前面的程序中,提到过使用using namespace std;引入这个命名空间,那么std就是由编程系统提供的标准命名空间,那什么是命名空间呢?

想像一下,比如一个年级的学生,在记录的时候出现了重名的情况,那么这个时候应该怎么记录呢,是不是需要加一些其它的名称,比如,一三班小李同学,一一班小李同学,那个C++中也会存在类似的情况,比如我们定义一个打印函数,

#include <iostream>
using namespace std;void prnt()  //打印A
{cout << "printA" << endl;
}int main()
{prnt();return 0;
}

上面定义了一个prnt()函数,程序执行:

但是如果想再定义一个,那么这个时间,如果再写一个,会出现什么情况?

#include <iostream>
using namespace std;void prnt()  //打印A
{cout << "printA" << endl;
}
void prnt()  //打印A
{cout << "printB" << endl;
}int main()
{prnt();return 0;
}

这个时候运行程序,会出现什么情况?

下面的错误提示,

提示重复定义。

这个时候应该给一个改名,当然改名字没有任何问题,可以使用,但是如果不改名,应该怎么处理,这个时候就可以使用命名空间,

#include <iostream>
using namespace std;namespace A {void prnt() { //打印Acout << "printA" << endl;}
}
namespace B {void prnt() { //打印Acout << "printB" << endl;}
}
int main() {A::prnt();B::prnt();return 0;
}

增加了两个命名空间,A和B,在使用的时候,直接使用A::prnt();B::print()即可调用不同的函数,就像喊小李同学一样,如果直接喊,那么不知道叫的哪个,但是如果加上一一班小李同学,那么这个时候就可以明确确定是叫谁,这个规则是一样的。

命名空间可以定义到一个文件中,也可以定义到几个文件中,即不一定是连续的文件中,这个时候只要引入即要将同样的命名空间引入。

命名空间中可以定义常量,变量,函数等,并且可以嵌套,如

#include <iostream>
using namespace std;namespace A {namespace AA{void prnt() { //打印Acout << "printA" << endl;}}
}int main() {A::AA::prnt();return 0;
}

在A的命名空间中再定义了AA的空间,那么引入的时候,就成了A::AA::prnt()即可。

但是注意命名空间只能定义到全局,不能定义到函数中,比如

#include <iostream>
using namespace std;void funA()
{namespace A {namespace AA {void prnt() { //打印Acout << "printA" << endl;}}}
}
int main() {A::AA::prnt();return 0;
}

那么这个时候就是错误的,

 这个在使用的时候注意即可。


http://www.ppmy.cn/ops/114023.html

相关文章

2024华为杯研赛E题保姆级教程思路分析

E题题目&#xff1a;高速公路应急车道紧急启用模型 今年的E题设计到图像/视频处理&#xff0c;实际上&#xff0c;E题的难度相对来说较低&#xff0c;大家不用畏惧视频的处理&#xff0c;被这个吓到。实际上&#xff0c;这个不难&#xff0c;解决了视频的处理问题&#xff0c;…

切换淘宝最新npm镜像源

切换淘宝最新npm镜像源是一个相对简单的过程&#xff0c;但首先需要明确当前淘宝npm镜像源的状态和最新的镜像地址。由于网络环境和服务更新&#xff0c;镜像源的具体地址可能会发生变化&#xff0c;因此&#xff0c;我将基于当前可获取的信息&#xff0c;提供一个通用的切换步…

数据结构_1.1、数据结构的基本概念

1、基本概念 数据&#xff1a;是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 数据元素&#xff1a;数据元素是数据的基本单位&#xff0c;通常作为一个整体进行考虑和处理…

【Python123题库】#绘制温度曲线 #XRD谱图绘制 #态密度曲线绘制

禁止转载&#xff0c;原文&#xff1a;https://blog.csdn.net/qq_45801887/article/details/140087866 参考教程&#xff1a;B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 绘制温度曲线XRD谱图绘制态密度曲线绘制 绘制温度…

MATLAB中single函数用法

目录 语法 说明 示例 转换为单精度变量 single函数的功能是返回单精度数组。 语法 Y single(X) 说明 Y single(X) 将 X 中的值转换为单精度。 MATLAB 中的单精度变量存储为 single 数据类型&#xff08;类&#xff09;的 4 个字节&#xff08;32 位&#xff09;浮点值…

002.k8s(Kubernetes)一小时快速入门(先看docker30分钟)

简介&#xff08;免费开源&#xff0c;google开源&#xff09; 关键概念&#xff1a; 容器&#xff08;Containers&#xff09;&#xff1a;Kubernetes 管理容器&#xff0c;通常使用 Docker&#xff0c;允许应用程序在隔离的环境中运行。节点&#xff08;Nodes&#xff09;&am…

[网络][知识]计算机端口详细列表

计算机端口介绍 我们常常会在各类的技术文章中见到诸如135、137、139、443之类的“端口”,可是这些端口究竟有什么用呢?它会不会给我们的计算机带来潜在的威胁呢?究竟有多少端口是有用的?想要了解的话,就跟我来吧:D 端口:0 服务:Reserved 说明:通常用于分析操作系…

TSRPC+Cocos

TSRPC文档: https://tsrpc.cn/docs/get-started/api.html 创建 先创建一个默认的会话项目&#xff0c;找一个文件夹在控制台运行以下代码&#xff1a; npx create-tsrpc-applatest first-api --presets browser # 或者 yarn create tsrpc-app first-api --presets browser运…