精华内容
下载资源
问答
  • C++ 定义命名空间 , 作用域
    千次阅读
    2018-09-03 11:42:24

    C++作用域:1、文件 2、函数内  3类,结构体等复合语句
     命名空间:对作用域命名

    命名空间分类:
        系统命名空间: std
        自定义义的命名空间:

    首先我们写一个 test.cpp .

    #include<iostream>
    using namespace std;
    
    int a =200;
    
    void fun()
    {
    	cout<<"test::fun()"<<endl;
    }

    在同一路径下 , 再写一个 main.cpp 运行时会报错 , 报错 : 重复定义了 a , 因为有一个extern int a ; 声明变量来自于外部 .

    #include<iostream>
    using namespace std;
    
    //声明变量来自于外部
    extern int a;
    int a=100;
    int main()
    {
    	int a=300;
    	cout<<a<<endl;
    	return 0;
    }

    我们再在同一路径下 , 写一个 namespace.cpp  , 直接运行会报错说 cout 和 endl 的作用域未声明  . 

    #include<iostream>
    int main()
    {
    	cout<<"hello everyone"<<endl;
    }

    1使用命名空间:
        1、通过作用域符  空间名::空间成员
        2、声明命名空间:  using namespace 命名空间 ;

    当我们加上 std::cout<<"hello everyone"<<std::endl ; 时就不报错了 , 因为声明了 std 的作用域 .

    #include<iostream>
    
    int main()
    {
    	std::cout<<"hello everyone"<<std::endl;
    }

    当我们将加上 using namespace std ;  它就会优先去 std 中查找 .

    #include<iostream>
    using namespace std;
    int main()
    {
    	cout<<"hello everyone"<<endl;
    }

    2定义空间:
        namespace 命名空间
        {
            1函数
            2结构体
            3定义类
            4、定义变量,对象
            5、嵌套的命名空间    
        }

    下面定义了两个命名空间 chh  和  lf  , 首先会打印 300 因为会选择局部变量优先 , 打印 a=300 ; 如果把 int a=300 ;注释掉的话 , 会报错 : 说'a'在此作用域中未声明 .

    #include<iostream>
    using namespace std;
    
    namespace chh
    {
    	int a=100;
    }
    
    namespace lf
    {
    	int a=200;
    }
    
    int main()
    {
    	//int a=300;
    	cout<<a<<endl;
    }

    当我们给a 添加作用域后 , 就不报错了 , 就会打印出 chh 空间里面的 a  , 打印出 100 .

    #include<iostream>
    using namespace std;
    
    namespace chh
    {
    	int a=100;
    }
    
    namespace lf
    {
    	int a=200;
    }
    
    int main()
    {
    	//int a=300;
    	cout<<chh::a<<endl;
    }

    所以我们可以直接在下面声明使用 chh 或者 lf 的命名空间了 , 就不用给 a 添加作用域了 .

    #include<iostream>
    using namespace std;
    
    namespace chh
    {
    	int a=100;
    }
    
    namespace lf
    {
    	int a=200;
    }
    
    using namespace chh;
    
    int main()
    {
    	//int a=300;
    	cout<<a<<endl;
    }

    命名空间还可以嵌套使用 , 下面会打印出 group 里面的b.

    #include<iostream>
    using namespace std;
    
    namespace group
    {
    	namespace one
    	{
    		int b=3;
    	}
    	namespace two
    	{
    		int b=2;
    	}
    	int b=1;
    }
    
    int main()
    {
    	cout<<group::b<<endl;
    }

    也可以引用 group 里面的 one 的命名空间 不过一般用的会很少 .

    #include<iostream>
    using namespace std;
    
    namespace group
    {
    	namespace one
    	{
    		int b=3;
    	}
    	namespace two
    	{
    		int b=2;
    	}
    	int b=1;
    }
    
    int main()
    {
    	cout<<group::one::b<<endl;
    }

    更多相关内容
  • C++定义命名空间

    2017-03-15 23:14:15
    c++自定义命名空间
    所谓C++中的namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
    一、<iostream>和<iostream.h>
      <iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
      后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了 和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。                            
      因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使 用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。 
    二、所谓namespace,是指标识符的各种可见范围。 
      C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 
      由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择: 
      1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下: std::cout << std::hex << 3.4 << std::endl; 
      2、使用using关键字。 using std::cout; using std::endl; 以上程序可以写成 cout << std::hex << 3.4 << endl; 
      3、最方便的就是使用using namespace std; 

    这里主要讲一下自己定义命名空间
    namespace myspace{
    int m;
    void  add(int a,int b){}

    }

    使用 myspace::add(1,2);
           myspace::m=1;
    或者using namespace myspace;

    展开全文
  • 2)C++命名空间定义

    2021-07-19 23:41:05
    定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。 附上代码: #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> //...

    命名空间定义(有三种情况)

    定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

     附上代码:

    #define _CRT_SECURE_NO_WARNINGS 1

    #include<iostream>

    //命名空间的定义

    using namespace std;

    namespace N1

    {

        int a = 100;

        namespace N2

        {

           int b = 101;

        }

    }

    Namespace N1

    {

        int c = 102;

    }

    int main()

    {

        cout << N1::a << endl;

        cout << N1:: N2::b << endl;

        cout << N1::c << endl;

        return 0;

    }

    注意:一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中

    3)C++命名空间的使用

    展开全文
  • C++命名空间定义与使用

    千次阅读 2019-09-03 14:44:01
    1、对C++命名空间的理解 以主函数调用cout为例,使用using namespace std的作用是为了调用cout时,区分...2、定义命名空间 #include <iostream> using namespace std; //1、定义命名空间 namespace spaceA...

    1、对C++命名空间的理解

    以主函数调用cout为例,使用using namespace std的作用是为了调用cout时,区分此处的cout是<iostream>下命名空间std下的cout。具体理解下图辅助。

     2、定义命名空间

    #include <iostream>
    using namespace std;
    //1、定义命名空间
    namespace spaceA{//spaceA为域名空间名
        int g_a = 10;
    }//切记此处没有‘;’

    int main()

    {

    //cout << g_a << end;此处会报错
        //正确调用方法(此为直接调用方式)
        //第一种方式
        using namespace spaceA;
        cout << g_a << endl;
        //第二种方式
        cout << spaceA::g_a << endl;
        //第三种方式
        using spaceA::g_a;
        cout << g_a << endl;

        return 0;

    3、命名空间的嵌套

    #include <iostream>
    using namespace std;
    //定义命名空间
    namespace spaceB {
        int a = 20;
        namespace spaceC {
            struct student
            {
                int id;
                char name[20];
            };
        }
        using namespace spaceB::spaceC;//为namespace嵌套第3种方法添加(不常用
        
    }

    int main()

    {

    //namespace嵌套
        //方式1
        /*
        using namespace spaceB::spaceC;
        struct student s1;
        s1.id = 10;
        */
        //方式2
        spaceB::spaceC::student s1;
        s1.id = 10;
        cout << s1.id << endl;
        //方式3//嵌套
        /*using namespace spaceB;
        struct student s1;
        s1.id = 10;
        */

    return 0;

    }

    总结:

    1. 当使用<iostream>的时候,该文件没用定义全局命名空间,必须使用namespace std;这样才能正确使用cout。若不引用using namespace std,需要这样做。
    2. C++命名标准为了和C区别开,也为了正确使用命名空间,规定有文件不适用后缀.h
    3. C++命名空间的定义:namespace name[…]
    4. Using namespace NameSpaceA;
    5. namespace定义可以嵌套
    展开全文
  •  名字空间C++提供的一种解决符号名字冲突的方法。  一个命令空间是一个作用域,在不同名字空间命名相同的符号代表不同的实体。  通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间的相互...
  • C++ 命名空间以及自定义命名空间

    千次阅读 2019-09-25 22:31:21
    C++命名空间 1. C++中的命名空间 标准命名空间 namespace std C++在一般的库文件以及常规操作都需要包含C++标准的命名空间std,用户在使用等头文件时,C++标准把所有的有关stream中的关键字都加上了std的命名空间。...
  • C++ 命名空间

    2021-01-03 01:46:52
    C++ 命名空间 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况也出现在 C++ ...
  • C++命名空间实例解析

    2020-12-31 13:57:40
    一、定义命名空间 1、每个命名空间都是一个作用域 和其他作用域类似,在命名空间中的每个名字必须表示唯一实体,而在不同命名空间中,可以有相同名字的成员。 2、命名空间可以是不连续的 命名空间可以定
  • C++命名空间详解

    2022-02-25 19:22:22
    C++命名空间详解
  • C++无名命名空间

    千次阅读 2022-02-01 16:16:22
    一、定义 定义: 无名命名空间,又称为未命名的命名空间。是指关键字namespace后紧跟花括号括起来的一系列声明语句,不需要对命名空间取名。...无名命名空间定义的成员的作用域与该命名空间所在的作用域相
  • C++命名空间

    2021-06-16 19:15:18
    大型应用程序经常使用来自不同厂商的开发库,几乎不可避免会使用相同的名字,也就是说一个库中定义的名字可能与其他库中的名字相同...命名空间是用来限定名字的解析和使用范围的,他是C++开发大型程序的工具之一 ...
  • c++命名空间

    千次阅读 2021-11-07 10:16:42
    命名空间(namespace),是c++引入的一种机制,namespace目的是用来解决全局变量名与函数名或函数名与函数名之间名称相同的冲突的。c语言没有namespace,从c扩展而来的c++早期也没有,后来的c++、java、python都使用...
  • 3.C++默认命名空间 (1)又叫全局命名空间 (2)默认命名空间引用其他命名空间方法 (3)默认命名空间引用自己的方法 (4)其他命名空间引用默认命名空间中的方法::f(); 4.C++匿名命名空间 1.3.4.1、std和cout的引入 (1)std...
  • C++命名空间中声明类和成员函数

    千次阅读 2018-06-24 15:47:22
    首先关于前置声明,有以下几点要注意:在b.h头文件中引入类a时,有两种方式,前置声明和 #include “a.h”,建议使用前置声明,当a.h的私有成员改变时,b.h不需要重新编译。... 其次关于命名空间:1、为什么引入...
  • C++:定义头文件/定义命名空间

    千次阅读 2020-02-26 22:25:33
    1.先在任意一个文件夹建立一个叫做hello.cpp的文件 2.在hello.cpp同一个...3.在myhead1.h文件中声明并定义一个函数方法,叫m1,这个m1什么都不做,就打印一句话"myhead1->m1" 4.在hello.cpp文件中调用m1方法 ...
  • C++命名空间详解

    千次阅读 2021-08-04 14:40:00
    c++命名空间详解命名空间的意义命名空间的定义命名空间的使用 命名空间的意义 在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用...
  • c++命名空间用法总结

    2022-04-06 11:19:30
    今天来总结一下c++命名空间(namespace)和类(class)的用法 命名空间 相信各位写代码的时候都会加上这么一句话 using namespace std; namespace是啥意思 但你能一直都不知道namespace是啥意思 namespace中文...
  • 1、命名空间引入 假设有一种情况,在一栋教学楼中,A班级和B班级都有一个女生叫小红...命名空间C++引入的可以由用户命名的作用域,用来处理程序中常见的命名冲突。 3、命名空间定义 (1)、一个名字空间可以在两...
  • c++ 命名空间

    2012-05-21 11:15:03
    C++ using namespace std 详解  所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
  • 注意事项:在定义命名空间时,结束不要加分号,示例如下: namespace model1 { int i;//当前变量i只对命名空间model1可见,它的作用域被限定在model1 int j; } namesapce model2 { int i;//当前变量i只对命名空间...
  • C++ 命名空间 (namespace)

    2021-05-23 04:14:24
    C++ 命名空间 (namespace). 看一下我们的 "老朋友" 命名空间是什么, 以及能帮助我们解决什么问题.
  • C++入门系列2】从C到C++C++命名空间和头文件详解
  • C++定义不受命名空间的约束

    千次阅读 2018-06-20 22:04:58
    C++中,宏定义不受命名空间的约束 例 // xxx.h namespace A { #define xxx() xxxxx } // 在其他文件中,引入xxx.h文件,使用宏定义时,不需要加命名空间 // yyy.cpp #include "xxx.h" // somd code ...
  • .h中 namespace st{ int b; } int b;属于声明并定义,而在.h的命名空间中只能放声明,.h被引用多少次,int b就声明和定义了几次,为了解决这个问题,有如下解决方法: 方法一:
  • C++ 命名空间 别名

    2021-05-21 14:33:34
    C++ 命名空间 别名 namespace alias
  • 实例讲解C++ 命名空间

    2020-12-17 04:05:00
    假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用...使用了命名空间定义了上下文。本质上,命名空间就是定义了一个范围。 我们举一个计算机系统中的例子,一个文件夹(目录)中
  • 文章目录C++入门基础命名空间一、命名空间是什么?二、命名空间的创建三、命名空间的使用总结 提示:以下是本篇文章正文内容,下面案例可供参考 命名空间 一、命名空间是什么? 在编写程序C程序时,也许会遇到...
  • C++系列: 嵌套命名空间

    千次阅读 2021-01-03 08:39:52
    嵌套命名空间就是在命名空间里面在定义其它的命名空间,就像是俄罗斯套娃。 namespace np1 { namespace np2 { namespace np3 { } } ... } 2.实验 2.1 外部引用嵌套命名空间内的符号 情况一.
  • C++语言基础 命名空间

    2020-08-25 03:06:05
    一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,当有两个人都同时定义了一个名字相同的全局变量或函数的时候,若是把他们的代码整合在一块编译,此时编译器就...便引用了命名空间(namespace)的概念
  • 什么是命名空间? 字面意思来理解,命名空间主要有两个点——“名字”和“空间”。通过这两个关键词,我给大家简单描述一下什么是命名空间(看下面↓) 举个例子:有一个学校,世界之大无奇不有,恰恰这个学校就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,632
精华内容 45,052
关键字:

c++定义命名空间

c++ 订阅