c++命名空间---namespace

C++ 命名空间

 C++ 应用程序中。例如,您可能会写一个名为 func() 的函数,在另一个可用的库中也存在一个相同的函数 func()。这样,编译器就无法判断您所使用的是哪一个 func() 函数。

因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。

定义命名空间

命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示:

为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:

name::code; // code 可以是变量或函数,name是命名空间的名字

eg:

#define _CRT_SECURE_NO_WARNINGS#include<iostream>
namespace space_test1
{typedef int T;int a = 1000;void fuc(void){std::cout << "I am space_test1 \n";}
}namespace space_test2
{typedef double T;int a = 100;void fuc(void){std::cout << "I am space_test2\n";}
}
int main()
{//通过命名空间的不同,可以使用相同的函数,变量,类型space_test2::T high = 1.1;space_test1::T age = 25;space_test2::fuc();space_test1::fuc();std::cout << "high=" << high << std::endl;std::cout << "age="<< age<<std::endl;std::cout << "space_test1::a=" << space_test1::a << std::endl;std::cout << "space_test2::a=" << space_test2::a << std::endl;system("pause");return 0;
}

using 指令

您可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。

 

为什么我们不推荐using namespace  ...的做法:

 

命名空间使用这样直接的声明,破坏了它想要解决的同名函数,变量,类等问题,虽然在不引起二义性的情况下,我们会方便一些,因为可以少输入几个字符,但是,在不能保证是否有相同函数,变量,类的情况下,还是使用命名空间前缀更合适。

转载于:https://www.cnblogs.com/yangguang-it/p/9612938.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的中文语音识别系统框架(pluse)

目录 声学模型GRU-CTCDFCNNDFSMN语言模型n-gramCBHG数据集本文搭建一个完整的中文语音识别系统&#xff0c;包括声学模型和语言模型&#xff0c;能够将输入的音频信号识别为汉字。 声学模型使用了应用较为广泛的递归循环网络中的GRU-CTC的组合&#xff0c;除此之外还引入了科大…

jSignature签名的用法,一文教会你(一)前端代码

jSignature签名的用法1、先看看效果以后最后它是什么格式的2、先去下载该js3、下载以后就把它引入我们的HTML中4、看一下我的例子吧&#xff01;下期我们在讲&#xff0c;怎么把base64在后台处理&#xff0c;然后在存进我们指定的位置&#xff0c;以及怎么存数据库&#xff1b;…

jSignature签名的用法,一文教会你(二)后台代码

1、先在我们的项目里加几个工具类&#xff0c;代码如下 AbstractUploadAction &#xff08;名字可以自取&#xff0c;这个不影响&#xff09; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream;import javax.s…

mac系统,鼠标移动太慢

to check your speed:defaults read -g com.apple.mouse.scalingto set your speeddefaults write -g com.apple.mouse.scaling 7reboot your mac转载于:https://www.cnblogs.com/IWings/p/9614793.html

关于js的一些常用小知识点(持续更新)

关于js的一些常用小知识点1、获取页面中所有选中的CheckBox复选框的值2、js获取网页URL中所带的参数3、js模拟点击button4、前端传入后台list&#xff0c;后台是不能接收List的&#xff0c;就需要传的时候转化一下&#xff0c;把list转成String&#xff0c;后台用一个String型接…

esp32-智能语音-录音(保存于SD卡)

1 //初始化ES8388&#xff0c;更改为双麦 2 ESP_LOGI(TAG, "[ 2 ] Start codec chip"); 3 audio_hal_codec_config_t audio_hal_codec_cfg AUDIO_HAL_ES8388_DEFAULT(); 4 audio_hal_handle_t hal audio_hal_init(&audio_hal_codec_cfg, 0); 5 …

HTML5 多图片上传(前端+后台详解)

HTML5 多图片上传&#xff08;前端后台详解&#xff09;1、参考jquery插件库2、修改代码3、添加的后台代码4、删除的后台代码1、参考jquery插件库 手机端实现多图片上传 2、修改代码 我发现他这里的代码仅仅只是显示出来了&#xff0c;对后台一点作用都没有&#xff0c;于是…

vue2.0移动端自定义性别选择提示框

这篇文章主要是简单的实现了vue2.0移动端自定义性别选择的功能&#xff0c;很简单但是经常用到&#xff0c;于是写了一个小小的demo&#xff0c;记录下来。 效果图&#xff1a; 图片.png实现代码&#xff1a; <template><div class"app"><div class&q…

Linux的一些简单的常用命令

基本操作 基本操作 1>.ls &#xff08;横向查看目录&#xff09; ll&#xff08;竖排查看目录&#xff09; 2>.mkdir &#xff08;创建文件夹&#xff09; 3>.cd 文件夹名 &#xff08;进入该文件夹&#xff09; cd ..&#xff08;返回上一级目录&#xff09; 4>.…

程序10 VC编写批量重命名工具

实现对文件夹下的全部文件进行重命名。 本节编写一个批量重命名工具。学习内容&#xff1a;文件操作&#xff0c;文件遍历等知识API&#xff1a;CFileFindFindFileFindNextFilerename 视频学习地址&#xff1a;https://www.bilibili.com/video/av31482925/转载于:https://www.c…

每个线程只对一个数据操作就不会出现线程安全问题-------------成员变量,用来计算累加的和...

package charpter12; public class Processor implements Runnable { private int count; // 成员变量&#xff0c;用来计算累加的和 Override public void run() { for (int i 0; i < 100; i) { count i; } System.out.println(Thread.currentThread().getName() "…

微信小程序入门的一些建议,替大家踩坑

小程序入门教程1&#xff0c; 建议先去看官方文档2&#xff0c;说说app.json这个文件3、app.js4、点击事件5、跳转页面最后要说一下我踩的一个大坑&#xff0c;样式问题1&#xff0c; 建议先去看官方文档 微信小程序官方文档 官方文档里有下载微信开发者工具的地址&#xff0c…

解决微信小程序新建项目没有样式问题,以及官方demo

官方的demo 把这个下载下来&#xff0c;把dist目录下的app.wxss里面的样式全部放到我们项目的app.wxss里就可以了。 这个demo我们还可以参考。新开一个微信开发者工具&#xff0c;点击导入&#xff0c;然后导入dist目录&#xff0c;就可以运行起来了。在调试器的console中可以看…

Java static 静态代码块、代码块

简述 static{} 静态代码块&#xff0c;加载类之前执行{} 代码块&#xff0c;每次new的时候都会被执行示例 类&#xff1a; public class Student {int age;String name;boolean sex;public Student(){age10;name"Xu";sexfalse;}static{System.out.println("This…

云服务器Linux安装,配置,使用nginx

云服务器Linux安装&#xff0c;配置&#xff0c;使用nginxlinux安装nginxnginx的使用linux安装nginx 检查是否安装了GCC&#xff08;可在任何目录下输入&#xff09; yum list installed | grep "gcc"如果像下图一样&#xff0c;就说明安装了&#xff0c;反之没安装…

原来文化设计可以这样玩!

设计是什么&#xff1f;设计是一种以科学的方法去高效解决问题的办法&#xff0c;为之设计。例如一个灯&#xff0c;是为了照明&#xff0c;如果改良的灯&#xff0c;肯定是为了高效或者节能地解决照明这个需求&#xff0c;没毛病吧&#xff1f; 那么中秋的花灯是什么&#xff…

Windows安装python,以及python的集成开发环境Pycharm

安装python&#xff0c;以及python的集成开发环境Pycharm1&#xff0c;安装python&#xff08;Windows&#xff09;2&#xff0c;安装python的集成开发环境1&#xff0c;安装python&#xff08;Windows&#xff09; 进入python官网 点击图中标识出来的这个&#xff0c;是个ex…

zbb20180913 java synchronized同步静态方法和同步非静态方法的异同

java synchronized同步静态方法和同步非静态方法的异同 所有的非静态同步方法用的都是同一把锁——实例对象本身&#xff0c;也就是说如果一个实例对象的非静态同步方法获取锁后&#xff0c;该实例对象的其他非静态同步方法必须等待获取锁的方法释放锁后才能获取锁&#xff0c;…

Python 最难的问题

Python 最难的问题 超过十年以上&#xff0c;没有比解释器全局锁&#xff08;GIL&#xff09;让Python新手和专家更有挫折感或者更有好奇心。 未解决的问题 随处都是问题。难度大、耗时多肯定是其中一个问题。仅仅是尝试解决这个问题就会让人惊讶。之前是整个社区的尝试&#x…

解决echart中:Cannot read property ‘queryComponents‘ of undefined

在使用案例的echart的日历图表的时候&#xff0c;遇到了&#xff1a; Uncaught TypeError: Cannot read property ‘queryComponents’ of undefined 思考了很久&#xff0c;还百度了&#xff0c;结果还是不好使&#xff0c;最后终于被我在一个问答了找到了答案。 刚开始我是…