简介:
using namespace std; //c++的命令空间
c++中的,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。
方式一:使用前先声明命令空间
test01源代码:
/*
关于std命令空间的几种测试
*/
#include<iostream>
//方式一,使用前先声明
using namespace std;
int main() {
int a = 10;
int b = 20;
int c = a + b;
int d = b - a;
//一次输出
cout << "a"<<"+"<<"b"<<"="<<c<<endl;
//二次输出
cout << "b" << "-" << "a"<< "=" << d;
}
运行结果:
a+b=30
b-a=10
错误情况分析:
情形一:未声明命名空间,导致错误:
/*
关于std命令空间的几种测试
*/
#include<iostream>
//未声明命名空间 using namespace std;
int main() {
int a = 10;
int b = 20;
int c = a + b;
int d = b - a;
//一次输出
cout << "a"<<"+"<<"b"<<"="<<c<<endl;
//二次输出
cout << "b" << "-" << "a"<< "=" << d;
}
错误窗口:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0020 未定义标识符 "cout" StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 13
错误(活动) E0020 未定义标识符 "endl" StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 13
错误 C2065 “cout”: 未声明的标识符 StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 13
错误 C2065 “endl”: 未声明的标识符 StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 13
错误 C2065 “cout”: 未声明的标识符 StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 15
情形二:只在第一个cout和endl前声明 std::
//一次输出
std::cout << "a"<<"+"<<"b"<<"="<<c<<std::endl;
//二次输出
cout << "b" << "-" << "a"<< "=" << d;
错误窗口:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0020 未定义标识符 "cout" StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 15
错误 C2065 “cout”: 未声明的标识符 StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 15
情形三:在每个cout前都声明std::,但在换页 endl前未声明
//一次输出
std::cout << "a"<<"+"<<"b"<<"="<<c<<endl;
//二次输出
std::cout << "b" << "-" << "a"<< "=" << d;
错误窗口:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0020 未定义标识符 "endl" StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 13
错误 C2065 “endl”: 未声明的标识符 StdTest01 E:\我的程序人生\C++\程序练习 (1)\StdTest01\StdTest.cpp 13
说明:以上情形只在相应位置未声明命名空间,其余代码相同。
情形四:在每个cout前都声明std::,且在换页 endl前声明
test02源代码:
/*
关于std命令空间的几种测试
*/
#include<iostream>
//方式二,使用时声明
int main() {
int a = 10;
int b = 20;
int c = a + b;
int d = b - a;
//一次输出
std::cout << "a"<<"+"<<"b"<<"="<<c<<std::endl;
//二次输出
std::cout << "b" << "-" << "a"<< "=" << d;
}
运行结果:输出成功
a+b=30
b-a=10
思考:test01和test02都能输出相同的结果,那么std究竟应该怎么用呢?
小结:
命名空间的使用
(1)源文件中使用using namespace std;
(2) std::标识符
为什么需要命名空间?
命名空间是ANSI C引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突
什么是命名空间?
所谓命名空间,实际上就是一个由程序设计者命名的内存区域。程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
标准命名空间
标准c++库的所有标识符都是在一个名为std的命名空间中定义的,或者说标准头文件(如iostream)中函数,类,对象和类模板是在命名空间std中定义的。
当用到标准头文件里的函数,类,对象时,可以在前面加上命名空间
std::cout<<“hello”<<endl;
但是每个函数都加有些不方便,c++常用using namespace语句对命名空间std进行声明,这样就不必对每个命名空间成员进行处理,在文件的开头加入以下using namespace声明:
using namespace std;
这样,在std重定义和声明的所有标识符在本文件中都可以作为全局变量使用。