C++ 比 C语言增加的新特性 3 之 命名空间namespace

1. 命名空间

1.1 命名空间

又称为“名字空间”,在内存(全局)中取一块区域并对其进行命名

实际例子:

同一个班级,两个同姓的人,例如:张三和张三,其中一个张三座位是在讲台右边,另外 一个张三座位是在讲台左边(将两个张三,放置在不同的区域里)

程序中,有两个一样的标识符(两个变量),编译器会提示标识符重名的问题,如何解决:将两个标识符放在不同的区域中

C++中的解决:

使用命名空间解决标识符重名的问题

1.1.1 有名空间

关键字:namespace

声明格式:	namespace   命名空间的名称    //名称符合C/C++语法规范即可{//代码}
1.1.1.1 直接访问:访问命名空间中指定的内容

符号:“  ::   ”,域作用符号

格式:

命名空间名称   ::    命名空间里的内容;

例如:

namesapce  zhangsan{int  a=10;}zhangsan::a   //访问名字空间中的变量a

main1.cpp


//直接访问有名空间中的变量
int a = 10;void function()
{cout << "全局函数function" << endl;
}void function1()
{cout << "这是全局的function1函数" << endl;
}
//有名空间
namespace zhangsan
{int a = 20;void function(){cout << "命名空间zhangsan中的function函数" << endl;}
}//无名空间
namespace
{void function4(){cout << "这是无名的名字空间的function4()" << endl;}
}int main()
{cout << "全局的a="<<a << endl;cout << "张三命名空间的a=" << zhangsan::a << endl;function();function1();zhangsan::function();//访问有名空间函数::function4();//访问无名空间函数return 0;
}

1.1.1.2 通过using关键字访问命名空间中指定的内容

关键字:using

格式:

using  命名空间名称    ::    命名空间中的内容;//将命名空间中的内容导入到using所在的空间中

例如:

using  zhangsan ::a;

main1.cpp

//通过using关键字访问命名空间中指定的内容
namespace lisi
{int sum = 30;int num = 40;
}using lisi::sum; //将sum变量导入到当前作用域中
using lisi::num;  //注释(取消)快捷键:ctrl+shift+/
int main()
{cout << "sum=" << sum << endl;cout << "num=" << num << endl;return 0;
}

1.1.1.3 通过using和namespace关键字访问命名空间中所有的内容

关键字:using、namespace

格式:

using   namespace   命名空间的名称  ;   //将命名空间里的所有内容导入到using\namespace所在的作用域(空间)中

例如:

using namespace zhangsan;
main1.cpp
//通过using和namespace关键字访问命名空间中所有的内容
namespace lisi {int b = 30;}using namespace lisi;
int main()
{cout << "b = " << b << endl;
}

1.1.1.4 命名空间也支持嵌套

格式:

        namespace      名称1

        {

                namespace  名称2

                {

                        namespace 名称3

                        {

                                ............

                         }

                   }

        }

main1.cpp

//命名空间也支持嵌套
namespace name1
{int  a = 30;namespace name2{int a = 40;namespace name3{int a = 50;}}
}int main()
{cout << "name1  a=" << name1::a << endl;cout << "name2  a=" << name1::name2::a << endl;cout << "name3  a=" << name1::name2::name3::a << endl;return 0;
}

1.1.1.5 练习

有相同的函数,一个函数实现1 +2+3+ ... +n的和,个函数实现1 +2+3+ .. +n和的平均数,在main函数调用这两个函数,分别打印他们的和和和的平均数

main2.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "iostream"
using namespace std;//命名空间
//有相同的函数, - 个函数实现1 + 2 + 3 + ... + n的和, - 个函数实现1 + 2 + 3 + .. + n和的平均数
// , 在main函数调用这两个函数,分别打印他们的和和和的平均数int sum() {int num = 0;int n = 0;printf("请输入一个数:");scanf("%d",&n);for (int i = 1; i <= n;i++) {num += i;}return num;
}namespace space2 {float sum() {int num = 0;int n = 0;printf("请输入一个数:");scanf("%d",&n);for (int i = 1; i <= n; i++) {num += i;}return num/(float)n;}
}int main()
{cout << "全局的num=" << sum() << endl;cout << "命名空间的num=" << space2::sum() << endl;return 0;
}

1.1.2  无名空间

注:全局作用域其实质就是一个无名的名字空间

关键字:namespace
声明格式:	namespace     {//代码}

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

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

相关文章

Web前端期末大作业-响应式唯美婚庆公司网站网页设计(HTML+CSS+JavaScript)

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末,…

挑战记忆力-Web前端实现记忆纸牌游戏(JS+CSS)

游戏介绍&#xff1a; js实现扑克牌翻牌记忆小游戏代码、连续点击翻开两张扑克牌&#xff0c;相同去重&#xff0c;不同则合上重新翻&#xff0c;考验你的记忆力。 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头…

html中form标签的作用style,HTML5中meta常用标签属性说明

HTML5中meta常用标签属性说明IE 兼容模式&#xff0c;Bootstrap 不支持 IE 古老的兼容模式。为了让 IE 浏览器运行最新的渲染模式下&#xff0c;建议将此 标签加入到你的页面中&#xff1a;content属性值 :width:可视区域的宽度&#xff0c;值可为数字或关键词device-widthhei…

IDEA 启动、编译、clean、安装maven等、报错Process terminated

报错原因&#xff1a;找不到settings.xml 解决方法&#xff1a;

html5 写json 文件,HTML5实现本地JSON文件的读写

参考&#xff1a;使用HTML5来实现本地文件读取和写入 (FileReader读取json文件&#xff0c;FileSaver.js保存json文件)JS创建、写入、读取本地文件(txt) (ActiveXObject 这玩意根本不能用&#xff0c;IE10 和 Chrome都试了)HTML 5中的文件处理之File Writer API (FileSaver…

Vue取消eslint语法限制

启动vue项目的时候经常报一大堆错误、但是不影响项目运行、 这是因为vue对语法的限制过于严格造成的 > bblee-app1.0.0 dev /Users/bianlifeng/my-project > webpack-dev-server --inline --progress --config build/webpack.dev.conf.js95% emitting …

html5中figure怎么用,figure 和 figcaption 元素的正确使用方式

figure和figcaption是两个经常在一起使用的语义化元素。如果你还没有在规范中了解过他们&#xff0c;没有机会在项目中使用过他们&#xff0c;或者说现在对他们还是一无所知&#xff0c;这里就给大家讲一些如何正确使用他们的小技巧。figure元素经常用于图片,如下所示:figure元…

Web前端期末大作业-响应式艺术培训机构网页设计(bootstrap+HTML+CSS+JavaScript+)实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末,…

Java毕业设计--健康推广管理系统项目实战【Springboot+mybatis+layui等实现】

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#x…

为计算机新建一个用户,win10

怎样在安装Win10系统时不创建Microsoft账户怎样在安装Win10系统时不创建Microsoft账户 在安装Win10系统的过程中&#xff0c;最让用户困扰的估计就是安装过程的最后一个步骤&#xff1a;登陆Microsoft账户。很多用户既没有Microsoft账户&#xff0c;也不想用它登陆系统&#xf…

Web前端期末大作业--响应式美女健身教练瑜伽馆网页设计(HTML+CSS+JavaScript+)实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末,…

Java经典课程设计--在线蛋糕商城销售网站项目【SpringMvc+mybatis+bootstrap等实现】

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#x…

最近使用计算机的记录,windows7查看最近使用记录

1.看计算机在哪天运行过~运行了多久&#xff01;(系统安装在c盘)找到c:\windows\SchedLgU.txt文件 里面有你自这个系统产生以来曾经工作过的时间&#xff0c;包括哪天开了机 开机时间 关机时间&#xff01;2.看你最近运行过什么程序&#xff1a;找到C:\WINDOWS\Prefetch下。里面…

Web前端期末大作业--绿色自适应医疗健康医院网页设计(HTML+CSS+JavaScript+)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;网页要求的总数量太多&#xff1f;HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

修复计算机的英语,Windows Repair最新版

Windows Repair是一个全能型的电脑系统修复工具&#xff0c;能将你的windows恢复到初始设置。可以帮你解决诸如注册表权限问题、ie、自动更新、防火墙等等一系列故障。【功能特点】1、系统自动修复&#xff1a;用它可以智能安全地自动修复被非法软件篡改的系统设置&#xff0c;…

SpringBoot配置图片虚拟映射

1. 新建一个MyWebAppConfigurer 配置静态资源需要映射的位置、建议把addResourceLocations的路径写在application.yml中、方面以后部署的打包修改配置文件的时候做外部配置文件加载、方面修改。这边为了节约时间就在代码中写了。 package io.renren.config; import org.springf…

计算机回收站怎么设计无法删除,电脑回收站中ai文件删不掉如何解决? ai文件在回收站删不掉的解决办法...

电脑回收站中ai文件删不掉该怎么办&#xff1f;在清理电脑回收站的时候&#xff0c;发现很多.ai文件都删不掉&#xff0c;粉碎也不行&#xff0c;这是怎么回事&#xff1f;下面我们来看看ai文件在回收站删不掉的解决办法&#xff0c;具体内容如下一些做平面设计的用户可能会在网…

mysql-修改密码(error-1290 (HY000): The MySQL server is running with the --skip-grant-tables option so)

执行&#xff1a;flush privileges; mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表&#xff0c;否则会出现拒绝访问或修改操作。

计算机系统军训口号,霸气的军训口号大全

让服从命令&#xff0c;听从指挥&#xff0c;团结互助&#xff0c;争创佳绩!巾帼X连&#xff0c;绿装红颜&#xff0c;骄阳无惧&#xff0c;奋勇向前!巾帼九连绿装红颜风雨无阻奋勇向前。威武十连敢为人先英姿飒爽勇往直前。打蔫了吧!没词了吧!你们的声音都哪儿去了呀?不行了吧…

Windows远程文件拷贝openEuler--WinSCP

由于最近项目迁移到openEuler操作系统上去了、需要部署安装项目、各种软件环境安装、资料拷贝复制等、记得以前用过WinSCP进行远程数据拷贝。今天就简单记录下使用方法。 百度百科介绍&#xff1a; WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。…