Skip to content

作用域运算符::

问题引入

通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量;那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。

cpp
#include <iostream>
using namespace std;

int a = 20;
void test()
{
    // 局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。
    int a = 10;
    cout << "a = " << a << endl;
}

int main(int argc, char const *argv[])
{
    test();

    return 0;
}

程序输出:

shell
a = 10

在test函数的输出语句中,使用的变量a是test函数内定义的局部变量,因此输出的结果为局部变量a的值。

作用域运算符可以用来

作用域运算符

作用域运算符使用实例

cpp
#include <iostream>
using namespace std;

int a = 20;
void test()
{
    // 局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。
    int a = 10;
    cout << "局部变量a:" << a << endl;

    // 打印全局变量a
    // ::代表作用域 如果前面什么都没加就代表全局作用域
    cout << "全局变量a:" << ::a << endl;
}

int main(int argc, char const *argv[])
{
    test();

    return 0;
}

程序输出:

shell
局部变量a:10
全局变量a:20

这个例子可以看出,作用域运算符可以用来解决局部变量与全局变量的重名问题,即在局部变量的作用域内,可用::对被屏蔽的同名的全局变量进行访问。