zoukankan      html  css  js  c++  java
  • 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 
    ";
        }
    }
    
    namespace space_test2
    {
        typedef double T;
        int a = 100;
        void fuc(void)
        {
            std::cout << "I am space_test2
    ";
        }
    }
    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  ...的做法:

     

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

  • 相关阅读:
    iOS_绘制带删除线的Label
    SSH深度历险(一)深入浅出Hibernate架构(一)-------映射解析——七种映射关系
    Android FoldingLayout 折叠布局 原理及实现(一)
    [JavaSecurity]
    AWR--service statistics
    VC驿站黑客编程(关机,重新启动,注销)
    每天进步一点点——Linux中的文件描写叙述符与打开文件之间的关系
    Cocos2d-X中的粒子
    cocos2dx3.0 对象池
    hdu 5317 RGCDQ
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/9612938.html
Copyright © 2011-2022 走看看