域作用符

域作用符

域作用符主要用来限定变量的作用域
比如:

#include<iostream>
#include "string.h"
using namespace std;

int num = 10;   //全局空间
int main()
{
    int num = 20; //栈空间
    cout << "当前num的值为:"<<num << endl;
    system("pause");
    return 0;
}
 可以看出第一个num是全局变量作用域为全局空间,第二个num是临时变量作用域为函数内部,因为两个变量都为num那么输出时会输出哪个num的只呢?

这里写图片描述

程序执行结果显示最终输出的是第二个num,因为输出语句和第二个num在同一个函数内部,输出时会选择离它近的输出,也就相当于在函数内部第二个num将第一个num覆盖了。

但是如果我要输出第一个num也就是全局变量num该怎么办呢?

#include<iostream>
#include "string.h"
using namespace std;

int num = 10;   //全局空间
int main()
{
    int num = 20; //栈空间
    cout << "当前num的值为:" <<::num << endl;
    system("pause");
    return 0;
}

执行结果:
这里写图片描述

可以看出我只是在num前面加了 :: 输出结果就变成了全局变量的num了;


域访问符::

::用来表明你要访问的变量所在的域,如果左边为空的话表示全局作用域的变量,经常搭配命名空间使用。

命名空间namespace

通过以上问题可以知道在编程过程中可能会遇到变量名重复的状况,为了区别使用重名的变量就要在域访问符前面加上变量的域,但仅仅全局域和临时变量在函数内部的局部域显然是不够用的。所以为了解决这个问题,引入了命名空间这个概念,通过使用
namespace xxx;你所使用的库函数或变量就是在该命名空间中定义的,这样一来就不会引起不必要的冲突了。

#include<iostream>
#include "string.h"
using namespace std;

int num = 10;   //全局空间
namespace test
{
    int num = 100;
}

int main()
{
    int num = 20; //栈空间
    cout << "全局变量:" <<:: num << endl;
    cout << "局部变量:" << num << endl;
    cout<<"test命名空间变量:"<<test::num << endl;
    system("pause");
    return 0;
}

这里写图片描述

从上图可以看出使用命名空间很好地区分使用了各个重名的变量。

std是一个很特殊的命名空间,它里面所有的变量以及函数都是c++标准库里的变量以及函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值