为什么会学习到双冒号作用域运算符,是因为在 QT 中使用到通过 C 语言调用函数 open 和 close 来操作LED设备文件时,需要在open 和 close 的前面加上 “::” 。
先看一个事例:
//#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int atk = 200;
void test01()
{
int atk = 100;
cout << "攻击力为:" << atk << endl; //输出100
//双冒号 作用域运算符 ::全局作用域
cout << "全局攻击力为:" << ::atk << endl; //输出200
}
int main()
{
test01();
return 0;
}
在 C 语言下没有这种用法,这是 C++ 对 C 语言的扩充。
双冒号是作用域运算符。
当上述代码中的语句写成这样:
std::cout << "攻击力为:" << atk << std::endl;
std::cout << "全局攻击力为:" << ::atk << std::endl;
连 using namespace std; 都可以省略了。
以此来理解上面在 QT 中遇到的情况。