一.using的声明
1.1 using的作用
让某个命名空间下的标识符都可以直接使用
在我们定义变量时可能会定义很多个变量,那么在调用时,就要使用作用域标识符,每调用一次就要写一次很麻烦,所以可以使用using
#pragma once
#include<iostream>
using namespace std;
namespace A{
int a = 10;
int b = 20;
int c = 30;
}
int main(){
cout<<A::c<<endl;
}
int main(){
using A::a;//在使用using 声明A::a之后可以直接调用a,不用作用域::了
cout<<a<<endl;
}
1.2 注意
在A::a下,再次定义变量会冲突报错;
报错的原因是:
using A::a的作用是声明一个a,把namespace A{int a = 10;}中的a = 10;放到int main中
所以这是mian()函数中有两个局部变量,所以会冲突
namespace A{
int a = 10;
int b = 20;
int c = 30;
}
int main(){
using A::a; //这里A::a也是局部变量
//在使用using 声明A::a之后可以直接调用a,不用作用域::了
cout<<a<<endl;
int a =100; //a=100是局部变量,这里会报错
}
二.using的使用办法/编译指令
using可以直接声明命名空间A,这样A下的所有变量都可以直接使用
#pragma once
#include<iostream>
using namespace std;
namespace A{
int a = 10;
int b = 20;
int c = 30;
}
int main(){
using namespace A; //这里是将A放到mian()里,a任是全局变量
//可以直接用using声明命名空间A,这样A下的变量都可以直接使用
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
int a = 100; //这里不会报错,a是局部变量
}
这里不报错的原因是: using namespace A;是将A放到mian()里,但a的作用域cout<<a<<endl;任是全局变量,在声明一个 int a = 100;//是局部变量,一个全局变量和一个局部变量不会冲突。
三. 标准命名空间
using namespace std;
这句话的意思是,允许c++使用一些标准的指令,放在全局里