2023.03.11.命名空间

c++命名空间 为了区分不同库中相同名称的函数、类、变量等
命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示:

namespace namespace_name {
// 代码声明
}
为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:

name::code; // code 可以是变量或函数,前面是命名空间名

可以使用 using 命名空间名字 来使用该命名空间 之后在主函数中的就是该命名空间下的

命名空间的嵌套
namespace A {
// 代码声明
namespace B {
// 代码声明
}
}
如果想使用 B空间
使用如下命令 using namespace A::B;


全局变量:

全局变量(Global variables)是编程术语中的一种,源自于变量之分。(变量分为局部与全局。)
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
一个局部变量在被其它对象引用时,会是一个空值。但全局变量却不会出现这种情况。

局部变量:

局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量。局部变量又可称之为内部变量
由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
局部变量是相对于全局变量而言的。


二者区别所在:

作用域不同:
全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
内存存储方式不同:
全局变量存储在全局数据区中,局部变量存储在栈区
生命期不同:
全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
使用方式不同:
全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量
(注:局部变量不能赋值为同名全局变量的值。)
当局部变量和全局变量同时存在的时候,优先引用局部变量,而不去引用全局变量。

#include<iostream>//输入输出流,不加  .h
using namespace std;//打开一个std(标准)命名空间

//使用一个命名空间
//1. using namespace 命名空间名,注意和其他命名空间冲突问题
//using namespace ??  ??就是优先使用的作用域
//2.  手动指定命名空间
namespace AA{
    int a=5;
    void show(){
        cout<<"AA.show()"<<endl;
    }
    int c=40;
};
//作用域:成员能使用的一个范围
namespace BB{
    int a=10;
    void show(){
        cout<<"BB.show()"<<endl;
    }
};
namespace CC {
    namespace BB {
        int a = 10;
        void show() {
            cout << "B2.show()" << endl;
        }
    };
};
//int a = 20;//全局变量
using namespace AA;
int main(){
    //int a = 200;
    // ::作用域运算符,::未指定任何作用域代表使用全局作用域
    cout<<a<<endl;//20
    cout<<BB::a<<endl;//10
    cout<<AA::a<<endl;//5
    AA::show();
    BB::show();
    CC::BB::show();
    
    cout << a << endl;
    system("pause");
    return 0;
}

 

posted @ 2023-03-11 10:49  Rainzzxy  阅读(94)  评论(0)    收藏  举报