双冒号运算符
- 双冒号运算符加在输出变量前面是说明要输出全局变量,抛弃就近原则
- std::cout就是打开std的一扇门,使用里面的cout输出方法
int i = 0;
void test(){
int i = 10;
cout << i << endl;//0
cout << ::i << endl;//0
}
int main(){
test();
return 0;
}
using编译指令
#include<iostream>
#include <cstring>
#include "test.h"
using namespace std;
namespace Tomcat {
int a = 20;
}
void test(){
int a = 10;
using Tomcat::a;
cout << a << endl;//这里出现了二义性,就是就近原则和命名空间冲突
//所以在using声明的时候要避免二义性
}
int main() {
test();
return 0;
}
- 下面这种写法只是打开了房间,但输出的还是按照就近原则
- 此时如果删除局部变量,输出的就是Tomcat命名空间的值
- 此时如果在add code here..这行加入namespace,就会产生编译报错,这种情况下就写Tomcat::a写明要使用的房间
void test(){
int a = 10;
using namespace Tomcat;
//add code here..
cout << a << endl;//这里出现了二义性,就是就近原则和命名空间冲突
//所以在using声明的时候要避免二义性
}