zoukankan      html  css  js  c++  java
  • C++语言基础(1)-命名空间

    一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,当有两个人都同时定义了一个名字相同的全局变量或函数的时候,若是把他们的代码整合在一块编译,此时编译器就会提示变量或函数重复定义,C++为了解决这个问题,便引用了命名空间(namespace)的概念。

    一.语法格式

    namespace 是C++中的关键字,用来定义一个命名空间,语法格式为:

    namespace name{
        //variables, functions, classes
    }

    name是命名空间的名字,它里面可以包含变量、函数、类、typedef、#define 等,最后由{ }包围。

    注意:也可以不用写name,若定义了一个没有名字的命名空间,则其内部的代码只能在这个文件里面用。

    namespace {
    
        int myAge = 0;
    }

    二.使用方法

    若要使用命名空间中定义的变量或函数,需要指名它们所在的命名空间,如:

    #include <stdio.h>
    #include <iostream>
    
    using namespace std;
    
    namespace DJ{
        int myAge = 0;
    }
    
    
    int main()
    {
        DJ::myAge = 5;
        cout << "my age is: "<< DJ::myAge << endl;
        return 0;
    }

    ::是一个新符号,称为域解析操作符,在C++中用来指明要使用的命名空间。

    还可以这样写(直接使用using声明):

    #include <stdio.h>
    #include <iostream>
    
    using namespace std;
    
    namespace DJ{
        int myAge = 0;
    }
    
    
    int main()
    {
        using DJ::myAge;
        myAge = 5;
        cout << "my age is: "<< myAge << endl;
        return 0;
    }

    在代码的开头使用using声明DJ:myAge,这样如果接下来的代码中出现了未指明命名空间的myAge,就使用DJ:myAge,不过要使用别的命名空间中定义的myAge,则仍然需要显示声明。

    还可以写成这样:

    #include <stdio.h>
    #include <iostream>
    
    using namespace std;
    
    namespace DJ{
        int myAge = 0;
    }
    
    
    int main()
    {
        using namespace DJ;
        myAge = 5;
        cout << "my age is: "<< myAge << endl;
        return 0;
    }

    如果命名空间 DJ中定义的其他的变量,样具有 myAge变量的效果。

    命名空间内部不仅可以声明或定义变量,对于其它能在命名空间以外声明或定义的名称,同样也都能在命名空间内部进行声明或定义,例如类、函数、typedef、#define 等都可以出现在命名空间中。

    三.std命名空间

    新建一个纯C++项目(QT)时,QT默认新建的main.cpp文件如下:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout << "Hello World!" << endl;
        return 0;
    }

    其实是省略了cout的命名空间,也可以写成这样:

    #include <iostream>
    
    int main()
    {
        std::cout << "Hello World!" << std::endl;
        return 0;
    }
  • 相关阅读:
    Java学习之路(三)--Thinking in Java
    Java学习之路(二)--Thinking in Java
    Java学习之路(一)--Thinking in Java
    ES6中y修饰符合u修饰符
    map数据结构
    Set数据结构
    不确定参数的处理
    函数参数的默认值
    class基础语法
    生成新数组的方法和在数组中查找
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/7054194.html
Copyright © 2011-2022 走看看