首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++ 语言】命名空间 ( namespace | 命名空间定义 | 命名空间嵌套 | 域作用符 | 与 include 对比 )

文章目录 命名空间简介 自定义命名空间 自定义嵌套命名空间 域作用符 命名空间 与 include 区别 命名空间定义与使用完整代码 命名空间简介 ---- 命名空间 ( namespace )...---- 自定义命名空间 ---- 自定义命名空间 ( namespace ) : 1.定义方式 : 使用 “namespace 命名空间名称 {}” 格式 , 定义命名空间 , 可以将变量和方法定义在命名空间中..., 这样就能区分两个完全相同的函数 ; ---- 命名空间定义与使用完整代码 ---- 代码中包含部分 C/C++ 兼容 , C/C++ 字符串 相关代码 , 属于上一篇博客遗留, 可忽略 , 只看命名空间相关的代码...//该方法定义在了 C 语言文件中 add(1, 2); //2....: " c << endl; cout c_p : " c_p << endl; //C 语言中的字符串操作 //拷贝字符串 char

2.3K30

【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )

一、命名空间 namespace 1、命名空间基本概念 命名空间 namespace 又称为 名字空间 , 名称空间 , 名域 , 作用域 , 是 C++ 语言 对 C 语言 的扩展 之一 ; C++...; 4、C 语言的命名空间 在 C 语言中 , 只有一个命名空间 namespace , 就是 全局作用域 ; C 语言中 , 所有的 全局标识符 , 都共享 同一个 命名空间 namespace (...作用域 / 名字空间 ) ; 这就使得 , 在 C 语言开发中 , 标识符 定义 经常出现冲突 , 在 C 语言 的 大规模开发中 , 不同的团队 开发者之间不好协调 ; 示例 1 : 开发者 A 定义了...全局变量 name , 开发者 B 也定义了 全局变量 name , 这就导致了二者之间出现了冲突 ; 示例 2 : C 语言模块 1 中定义了 全局变量 name , 在 C 语言模块 2 中定义了相同名称的全局变量...四、标准流 iostream ---- 标准流 iostream 的内容 , 都定义在 std 命名空间中 ; C++ 语言为了与 C 语言 在 头文件上 进行区分 C++ 语言的头文件没有 .h 后缀

73130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    命名空间重定义问题

    1.起因 在命名空间里面定义了一些变量,但是编译不过,说是有重定义问题 代码是这样的,在另外两个cpp文件里用到了这个头文件,造成了这个问题 1 2 3 4 5 6 7 8 9 10 11 12 13...CString> vLineStr; std::map mParagraph; std::map mLineSpacing; }; 3.问题分析 命名空间只不过是为了不让名字重复...可以看这个链接每日一问3: C++中extern关键字的作用 里面提到: 在介绍extern之前,我们需要了解一下变量的声明和定义。...而变量的定义指申请存储空间,并将其与变量名相关联,除此之外,还可以为变量指定初始值。在程序中变量可以声明多次,但只能定义一次。一般而言,定义就是声明。...但C++中由于extern的缘故,变量的声明和定义是可以分开的。凡是没有带extern的声明同时也都是定义。

    9110

    【C++】命名空间

    ++提供的命名空间; 什么是命名空间 所谓的命名空间就是一个域,可以由我们自己创造,我们可以在其中定义各种变量、函数、结构体、类等等; 为什么要使用命名空间 由于C++大量存在的标识符(变量、函数和类的名称...到一块去,引发冲突,就很难受了,而命名空间就是解决这样的问题而出现; 命名函数的定义 定义命名空间需要使用关键字namespace,顾名思义,就是命名空间的意思;我们依旧一上面的代码为例,倘若我将rand...命名空间的几种情况 1.不同命名空间中出现相同的命名 举个例子,我们在bit1的命名空间中定义了一个普通变量a,在bit2命名空间中定义了一个普通变量b,然后进行访问,这时候只要指明指那个命名空间就不会发生冲突...2.多个命名相同的命名空间 倘若我定义了多个命名空间,在这些明明空间中有几个变量的命名是相同,那他们会发生冲突吗? 会的。...当我们定义了多个相同的名字的命名空间的话,那么这些命名空间编译时就会发生合并,合并成一个共同的域,在同一个域中是不能出现命名相同的元素名称的。但命名空间支持嵌套。

    6310

    【C++】命名空间

    于是,C++之父(本贾尼)在C语言的基础上添加了面向对象编程的特性,设计出了C++语言的雏形, 此时的C++已经有了类、封装、继承等核心概念,为后来的面向对象编程奠定了基础。...命名空间(namespace) 为何引入namespace C语言存在一个命名冲突的问题 ,而本贾尼针对这一问题写在了C++中。...namespace的定义 定义命名空间,需要使用到namespace关键字,其后跟命名空间的名字,然后接一对{}即可,{}中为命名空间的成员。命名空间中可以定义变量/函数/类型等。...C++中域:函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。...namespace的使用 编译器在查找一个变量的声明/定义时,默认只会在局部或者全局查找,并不会在命名空间中查找(namespace和全局域互相独立)。 如何访问命名空间中定义的变量/函数呢?

    5600

    【C++】命名空间

    命名空间的由来 在C++开发过程中,大型程序往往会使用多个独立开发的库,这些库又会定义大量的全局名字,如类,函数和模板等。当应用程序用到多个供应商提供的库时,不可避免地会发生某些名字相互冲突的情况。...如下情况,C语言是无法解决类似的冲突问题的: #include #include int rand = 10; //rand是有关随机数的一个库函数 int main...命名空间的定义 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。...如下,我们定义了一个名为MFC的命名空间,里面包含了三个成员,分别是:变量min,函数Sum,结构体Stu: namespace MFC { //命名空间中可以定义变量/函数/类型 int min...sub1 - sub2; } } } 命名空间可以是不连续的 命名空间可以定义在几个不同的部分,同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中: 命名空间使用的三种方式

    11010

    C++命名空间

    文章目录 定义命名空间的格式 使用定义好的命名空间: 嵌套命名空间 不连续的命名空间 以前上课在Android studio上用java写代码的时候,有一个函数明明和书上一样,但就是出错,捣鼓了半天,原来是包导错了...如果没有命名空间,这些变量、函数、类的名称将都存在于全局命名空间中,会导致很多冲突,所以C++也有它自己的命名空间,而类似于命名空间之类的知识点,大多数都需要我们建立在一定的代码基础上才能够理解它(我相信刚开始有很多人不理解为什么要有...C++),这也是为什么很多C++入门书刚开始只是说using namespace std 这个叫命名空间,加上就好,并没有细说。...+中的一个关键字,至于std,标准C++把自己的整个库都定义在std命名空间中。...using namespace animal; 不连续的命名空间 命名空间可以定义在几个不同的部分中,因此命名空间是由几个单独定义的部分组成的。一个命名空间的各个组成部分可以分散在多个文件中。

    39820

    C++命名空间namespace

    我们常常会见到这样的语句: using namespace std; 或者还有这样的: using std::string; 这些其实就是使用了C++的命名空间技术。 什么是命名空间呢?...Jill { double pail; void fetch(); } 两个命名空间有着一样的变量,但因为是在不同的命名空间内,所以互相不会发生冲突。...using声明用于声明命名空间内的某一个变量或函数,而using编译指令会将整个命名空间全部都声明。...实际上C++不建议使用static,而更推荐这种做法: static int counts;// 不推荐 namespace { int counts;// 推荐 } int main() { ....对于命名空间的使用,也有一些指导原则: 使用已命名的命名空间中声明的变量,而不是外部全局变量或静态全局变量。 如果开发函数库或者类库,将其放在一个命名空间中。 不要过度使用using编译指令。

    40120

    【C++指南】命名空间

    C语言中没有命名空间而存在的问题 在C语言中,所有的全局标识符(包括函数名、变量名等)都位于同一个全局作用域中。...比如: 在C语言中,如果定义一个rand全局变量,刚开始,可以正常打印 然后,包含了头文件之后,就报错了,因为在stdlib头文件中,rand是函数,这里我们又定义了以rand全局变量...还是上面的例子,在C++中,将rand全局变量放在了命名空间中后,就不会与头文件中rand函数发生冲突 关于命名空间的定义和使用细则,会在稍后介绍 3....与标准库集成:C++标准库中的所有内容都定义在std命名空间中。通过使用命名空间,标准库能够与用户代码和谐共存,而不会引发命名冲突。...项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突 C++标准库都放在⼀个叫std(standard)的命名空间中 多文件定义同名的命名空间,它们会被当做是同一个命名空间

    9310

    【C++】命名空间详解

    #include #include int rand = 10; // C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决 int...main() { printf("%d\n", rand); return 0; } // 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数” 命名冲突...命名空间的定义 命名空间是一个区域,允许您在其内部声明名称以消除歧义。...在命名空间域内,可以包含以下内容: ① 变量、对象以及它们的初始化。 ② 枚举常量。 ③ 函数声明以及函数定义。 ④ 类、结构体声明与实现。 ⑤ 模板。...test.cpp中两个N1会被合并成一个 // test.h namespace N1 { int Mul(int left, int right) { return left * right; } } 注意:一个命名空间就定义了一个新的作用域

    16910

    【C++】详解命名空间

    3.3 命名空间的定义 在C++中相比于C语言,它新增了很多的关键字,其中一个关键字就是namespace——命名空间。这个关键字就是专门用来定义命名空间域的。...下面我们就来探讨一下; 3.4 命名空间的使用环境 我们在使用命名空间前,首先肯定是需要通过关键字namespace定义一个命名空间,这里要注意的是,因为命名空间是C++中的内容,因此我们是无法在.c文件下正常使用的...在清楚了命名空间中可定义的内容后,我们接着来挖掘一下命名空间可以定义的区域; 4.2 命名空间的定义区域 在前面的定义中,我们都是在全局域中定义的命名空间,接下来我们主要测试的是我们能否在局部域中来定义命名空间...之后我们详细介绍了C++中引入的新的概念——命名空间,以及命名空间的使用,并深入探讨了命名空间的三个点——命名空间中的内容、命名空间的定义区域以及命名空间中对象的生命周期。...,大家能够对C++这门高级计算机语言有一个初步的认识,并且能够了解这门语言中的新概念——命名空间。

    12310

    C++:02---命名空间

    一、概念: ①类似于仓库,空间内存储代码,需要用到时调用 ②也为防止名字冲突提供了更加可控的机制 二、命名空间的定义 定义的基本格式如下: namespace 命名空间名 { //一系列声明与定义 }...; 三、命名空间的注意事项 命名空间定义时最后的分号可有可无 只要出现在全局作用域中的声明都可置于命名空间内:类、变量定义(及其初始化)、函数声明(及其定义)、模板、其它命名空间....等 命名空间可以嵌套...ns //命名空间的嵌套 { }; }; void mySpace::fun() //定义函数要带上命名空间作用域限定符 { cout<<"mySpace"; } 命名空间的声明 //声明mySpace...int main() { int a=2; cout<<a; //2 cout<<::a;//1 cout<<ns1::a;//1 } 六、未命名的命名空间 1.在定义时省去命名空间名: namespace...{ int a=1; void fun(); } 2.特点: 拥有静态生命周期,取代了C语言中的static,使得其在整个文件中有效,其他文件无效 还可嵌套其它命名空间 命名空间内的名字要与其作用域的其它名字有所区别

    58710

    17.2 C++标准命名空间

    C++标准命名空间 C++ 标准库中定义了一个名为 std 的命名空间,其中包含了很多有用的函数、类、对象和类型定义,比如容器、迭代器。...在整个代码中,我用了 std 命名空间中的 vector 类和 iterator 类。...上述 demo 编译运行结果: 1 2 3 4 5 C++标准命名空间注意事项 读者在使用标准命名空间需要注意以下几点: 1、在使用 std 命名空间中的内容之前,一定要在程序中包含相关头文件,否则编译器将无法识别所使用的对象...2、C++ 标准库中的某些函数或类型与其他库或自定义代码中的名称相同,容易发生命名冲突。 因此,在引入 C++ 标准库时,要特别注意不要与已有名称冲突。...4、不要在使用 using namespace std; 或者 using std::xxx; 等命名空间的方式,会引入与项目自定义变量、函数冲突的情况。

    18620
    领券