• 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 }
  • 相关阅读:
    SQl语句学习笔记(二)
    Adaboost 算法
    降维PCA技术
    scanf 格式化字符串详解
    大小端模式和位域详解(转载)
    推荐系统开源软件列表汇总和点评(转载)
    遗传算法入门(转载)
    大白话解析模拟退火算法(转载)
    机器学习相关——协同过滤(转载)
    python面向对象之单例模式
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/6082087.html
Copyright © 2020-2023  润新知