namespace & 全局变量&局部变量

认识了一个作用域运算符::

若直接使用,则用于访问全局变量

int a=1;

int main()

{

        int a=10;

        cout<<a<<::a<<endl;//输出结果为101

        return 0;

}

为了对多个变量名相同,但实际用法不同的变量进行封装,引入了namespace

用namespace可以将多个空间中的相同变量区分开

namespace A

{

        int a=1;

}

namespace B

{

        int a=10;

}

//引用时,可以用A::a和B::a的方式进行调用

此外,namespace还可以封装函数(方法)

 namespace A

{

        int a=1;

       /*void func()

        {

                cout<<a<<endl;

        }

        在命名空间内定义*/

        void func();//在命名空间外定义,但需记得在命名空间内声明

}

void A::func()//记得标注A::表示所写的函数是A中的函数

{

        cout<<a<<endl;

}

当出现全局变量,局部变量,静态变量(namespace中的变量)时,优先级:局部>静态=全局 

理解例子:

    int a=1000;//全局变量
namespace Longname{
    int a=100;//静态变量
    void func();
    
}
void Longname::func()
    {
        cout<<"hello"<<endl;
    }
void test01()
{
    using namespace Longname;
    int a=10;//test01函数中的局部变量

        //若写using Longname::a;则等价于使用局部变量,则会与a=10;矛盾
    
    cout<<"a="<<a<<endl;
}
int main()
{

      int a=1;//main中的局部变量
    test01();
    return 0;
}

在这个例子中,main函数调用了test01,main中的a=1作用域无法被test01获取

在test01中,优先获取局部变量a=10,若其注释掉的话程序会报错。因为静态变量和全局变量都能被test01获取,且优先级一样高,故无法运行。

【tip:静态变量与全局变量的区别——当多个程序源文件在同一个项目中时,静态变量只能被该源文件访问,而全局变量可以被任意文件访问。】

在函数中,若想直接使用某个命名空间的元素,写上using namespace A即可。(如上面的例子,当出现局部变量与命名空间的变量重名时,优先使用局部变量,调用函数也同理)

当使用using遇到函数重载时,声明using namespace A::func;即可。后续对func()的调用取决于你传参的形式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全局变量局部变量都是在编程中使用的变量类型,但它们的作用范围和使用方式不同。 全局变量是在程序的任何地方都可以访问的变量,它们在程序开始执行时就会被创建,并在程序结束时销毁。在C++中,可以在任何函数的外部定义全局变量,例如: ``` #include <iostream> using namespace std; // 全局变量 int g = 20; int main () { // 局部变量 int a, b; // 初始化变量 a = 10; b = 20; g = a + b; cout << g << endl; return 0; } ``` 在上面的程序中,变量 `g` 是一个全局变量,可以在 `main()` 函数中直接使用,也可以在其他函数中使用。在 `main()` 函数中,我们将 `g` 的值设置为 `a + b`,然后输出 `g` 的值。 局部变量是在函数内部定义的变量,只能在函数内部使用。它们在函数被调用时创建,在函数调用结束时销毁。在C++中,可以在函数内部定义局部变量,例如: ``` #include <iostream> using namespace std; int main () { // 局部变量 int a, b; int c; // 初始化变量 a = 10; b = 20; c = a + b; cout << c << endl; return 0; } ``` 在上面的程序中,变量 `a`、`b` 和 `c` 都是局部变量,只能在 `main()` 函数中使用。在 `main()` 函数中,我们将 `a` 和 `b` 的值相加,然后将结果保存在 `c` 中,最后输出 `c` 的值。 总之,全局变量局部变量都是在编程中使用的变量类型,但它们的作用范围和使用方式不同。在编写程序时,需要根据具体的需要选择使用哪种类型的变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值