一,命名空间(namespace)的基本概念以及由来

1.什么是标识符:

  在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等。

2.什么是命名空间:

  所谓的命名空间是指标识符的可见范围。C++标准库中的所有的标识符都被定义在一个名为std的命名空间中。

3.C语言的命名空间:

  在C语言中只有一个全局作用域,因此在C语言中所有的标识符共享一个命名空间,因此随着代码量的增大,标识符之间可能会重名。由此会造成一些命名问题。

4.针对C语言的问题,在C++中提出了命名空间的概念:

  1.命名空间将全局作用域划分成不同的的部分。

  2.不同的命名空间中的标识符可以重名而不会发生冲突。

  3.全局作用域也叫做默认命名空间。

  4.命名空间之间可以相互嵌套。

二,命名空间(namespace)的定义以及使用

1.命名空间的定义:

namespace 命名空间名称
{
......
}

2.命名空间的使用:

using namespace name; // 使用name这个命名空间
using namespace name::variable; // 使用name这个命名空间下的variable
std::cout << "Hello,NameSpace" << std::endl; // 直接使用这个命名空间中的标识符
::tmp = ; // 使用默认命名空间的变量,默认情况下可以直接使用默认命名空间的所有标识符

3.域作用符::

  域作用符用两个冒号(::)表示,用来访问命名空间下的标识符。

三,命名空间(namespace)实际案例

# include<iostream>

/* 定义命名空间n1 */
namespace n1
{
/* 定义学生类 */
class Student
{
public:
char name[];
int age;
};
/* 定义函数 */
void printN1()
{
std::cout << "我是n1命名空间的printN1()" << std::endl;
}
/* 定义命名空间n2 */
namespace n2
{
/* 定义变量n */
int n = ;
}
} // 在默认命名空间下定义变量a
int a = ; int main()
{
// 使用命名空间n1,曝光n1的所有标识符,因此可以调用printN1()函数
using namespace n1;
printN1();
// 使用命名空间n2,曝光n2的所有标识符,因此可以使用变量n
using namespace n1::n2;
// 直接使用指定命名空间下的标识符
std::cout << n << std::endl;
// 使用域作用符访问默认命名空间下的标识符
::a = -;
}

C++中的命名空间的更多相关文章

  1. C语言中的命名空间

    C语言中的命名空间 命名空间是为了解决 "在相同作用域内如何区分 相同的标识符". 说明: ①只有在相同作用域的情况下才能使用到命名空间去区分标识符,在嵌套的作用域.不同的作用域区 ...

  2. 替换 wcf 消息传输中的 命名空间

    替换 wcf 消息传输中的 命名空间,http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix

  3. JavaScript中创建命名空间

    引用:http://ourjs.com/detail/538d8d024929582e6200000c   在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺 ...

  4. Namespacing in PHP (php 中使用命名空间)

    最近学习一下php的命名空间,中文文档不多,搜到一篇英文的,讲的还蛮系统的,特此翻译一下,以备以后查阅,大家有什么高见或更深刻或者 更悟透的见解希望能不吝赐教,晚辈感激不尽. 原文: http://c ...

  5. 在JavaScript中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...

  6. js中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...

  7. Entity Framework中实体模型命名空间的问题

    在添加一个实体数据模型的时候(就是扩展名为edmx那位)属性里明明设置了自己的命名空间,但是后台的Designer.cs命名空间生成规则却是项目的默认命名空间加edmx文件所在文件夹的名称, 是BUG ...

  8. 解读Python编程中的命名空间与作用域

    变量是拥有匹配对象的名字(标识符).命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典.一个Python表达式可以访问局部命名空间和全局命名空间里的变量.如果一个局部变量和一个全局 ...

  9. 说说PHP中的命名空间相关概念

    说说PHP中的命名空间相关概念 1. PHP中的命名空间是什么? 什么是命名空间?"从广义上来说,命名空间是一种封装事物的方法.在非常多地方都能够见到这样的抽象概念. 比如.在操作系统中文件 ...

  10. PHP中的命名空间(namespace)及其使用详解

    PHP中的命名空间(namespace)及其使用详解 晶晶 2年前 (2014-01-02) 8495次浏览 PHP php自5.3.0开始,引入了一个namespace关键字以及__NAMESPAC ...

随机推荐

  1. 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态

    最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...

  2. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  3. Ubuntu 16.10 安装byzanz截取动态效果图工具

    1.了解byzanz截取动态效果图工具 byzanz能制作文件小,清晰的GIF动态效果图,不足就是,目前只能通过输入命令方式来录制. byzanz主要的参数选项有: -d, --duration=SE ...

  4. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  5. ASP.NET Core 中文文档目录

    翻译计划 五月中旬 .NET Core RC2 如期发布,我们遂决定翻译 ASP.NET Core 文档.我们在 何镇汐先生. 悲梦先生. 张仁建先生和 雷欧纳德先生的群中发布了翻译计划招募信息,并召 ...

  6. Xamarin Android 应用程序内图标上数字提示

    最近在用 Xamarin 做一个 Android 应用,打开应用时,如果有新消息,需要在应用内的 Toolbar 或者首页的图标上显示数字提示.在这里和大家分享一下实现方法,如果你有更新好的实现方法, ...

  7. django 学习第一天搭建环境

    目前django版本是1.10,我学习的基础教材是 Web Development with Django Cookbook, Second Edition 搭建好配置环境 ssh免认证登录 修改一下 ...

  8. 设计模式之工厂模式VS抽象工厂

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  9. Ajax.BeginForm方法 参数

    感谢博主 http://www.cnblogs.com/zzgblog/p/5454019.html toyoung 在Asp.Net的MVC中的语法,在Razor页面中使用,替代JQuery的Aja ...

  10. sqlserver批量修改首字母为大写

    'hello world'  ---->   'Hello world' update tableName set columnName=CHAR(ASCII(SUBSTRING(columnN ...