zoukankan      html  css  js  c++  java
  • c++之命名空间namespace

    1命名空间解决全局变量的冲突

     1 main.h文件
     2 #pragma once
     3 // data命名空间的名称
     4 namespace data
     5 {
     6     int  num = 20;//外部全局变量冲突
     7 }
     8 
     9 
    10 main.cpp
    11 #include"main.h"
    12 #include<iostream>
    13 using namespace std;
    14 
    15 int num = 10;
    16 
    17 void main()
    18 {
    19     cout << num << endl;
    20     cout << data::num << endl;//::域作用符 此处必须使用域作用符
    21 
    22     cin.get();
    23 }

    2命名空间没有私有,全部变量,函数都是公有,可以访问
    using namespace data;//使用命名空间,直接访问当作全局变量
    内层覆盖外层,
    ::num 直接访问全局变量,全局变量不存在就是0
    使用命名空间必须在定义之后

    #include<iostream>
    
    using namespace std;
    
    //命名空间没有私有,全部变量,函数都是公有,可以访问
    //using namespace data;//使用命名空间,直接访问当作全局变量
    //内层覆盖外层,
    //::num 直接访问全局变量,全局变量不存在就是0
    //使用命名空间必须在定义之后
    
    namespace data
    {
        int num;
    
        void show()
        {
            cout << num << endl;
        }
    
    }
    using namespace data;//使用命名空间,直接访问当作全局变量
    
    
    //内层覆盖外层,
    namespace dataX
    {
        int num=100;
        namespace run
        {
            int num = 10;
            void show()
            {
                //::num 直接访问全局变量,全局变量不存在就是0
                cout << dataX::num << endl;
            }
    
        }
    
    }
    using namespace dataX;//使用命名空间必须在定义之后
    
    void main()
    {
        dataX::run::show();
    
        cin.get();
    }
    void main1x()
    {
    
        data::num = 10;
        show();
    
        cin.get();
    }

    3命名空间的使用

     1 #include<iostream>
     2 #include<cstdlib>
     3 using namespace std;
     4 
     5 
     6 namespace  string1
     7 {
     8     char str[10]{ "calc" };
     9 }
    10 namespace  string2
    11 {
    12     char str[10]{ "notepad" };
    13 }
    14 //命名空间拓展,名称相同,同一个命名空间
    15 //瀑布式开发
    16 namespace  string2
    17 {
    18     char cmd[10]{ "notepad" };
    19     void show()
    20     {
    21         cout << str << endl;
    22     }
    23 }
    24 
    25 //命名空间,可以无限嵌套
    26 namespace run
    27 {
    28     namespace runit
    29     {
    30         namespace runitout
    31         {
    32             int num = 100;
    33             void show()
    34             {
    35                 cout << num << endl;
    36             }
    37         }
    38     }
    39 
    40 }
    41 
    42 
    43 void main()
    44 {
    45     //system(string2::str);
    46     //string2::show();//命名空间的函数与变量
    47     run::runit::runitout::num = 199;
    48     run::runit::runitout::show();
    49 
    50 
    51 
    52     system("pause");
    53 }

    4匿名命名空间

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 
     6 //匿名命名空间等同全局变量
     7 namespace
     8 {
     9     int x = 10;
    10 }
    11 
    12 
    13 void main()
    14 {
    15     x = 3;
    16     cout << x << endl;
    17 
    18 
    19     cin.get();
    20 
    21 }
  • 相关阅读:
    Uva 10779 collector's problem
    poj 2728 最优比率树(最小生成树问题)
    LA 3126 二分图匹配 最小路径覆盖
    poj 1149 最大流构图
    Step By Step(Java XML篇)
    Step By Step(Java 输入输出篇)
    Step By Step(Java 集合篇)
    Step By Step(Java 线程篇)
    Step By Step(Java 反射篇)
    Step By Step(Java 国际化篇)
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/6082087.html
Copyright © 2011-2022 走看看