一般使用
在C++中经常要用到标准库中的cout、cin和endl。一般有三种方法来引用:
- 直接使用using namespace std语句
- 使用std::前缀:
std::cout
std::cin
std::endl
- 有选择性地用using语句:
using std::cout
using std::cin
using std::endl
这种语法的一般形式是:
using 前缀::符号;
有了这个语句,指定的符号可以随后不加std::前缀而被引用。
注意问题
一个复杂的程序可能会使用多个库,每个库都可以提供数百个类对象和函数名。名称冲突的可能性增加了。其解决办法是,然每个库创建自己的命名空间,要引用一个命名空间内的某个符号(也就是一个名字),必须使用前缀(如std,指C++标准库),或通过using语句来提供访问。
using namespace std;//使用一个叫std的命名空间
using namespace语句是访问库中所有符号的一种简便方法,危险的是,如果使用多个库,则对所有库中的所有命名空间采用using namespace非常容易造成名字冲突。
对于简单的程序,使用using namespace std 在大多数情况下不会出现问题(但名字冲突仍然会发生,所以一定要小心)。即使在编写短程序时非常方便,但也有可能成为一个坏习惯,所以建议使用有选择性的using:
using std::cout;
using std::cin;
using std::endl;
标准写法
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main(void) {
cout << "Hello World!" << endl;
return 0;
}
using作用域
还应当注意的是,using语句只在定义它的作用域中有效。
int main(void) {
using namespace std;//只在main函数中有效,而在其他函数中不能直接访问std命名空间
cout << "Hello World!" << endl;
return 0;
}
创建自己的命名空间
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
namespace test {
int a = 666;
double b = 99.9;
}
int main(void) {
using namespace std;//只在main函数中有效,而在其他函数中不能直接访问std命名空间
cout << "Hello World!" << endl;
cout << "a of test is :" << test::a << endl;
cout << "b of test is :" <<test::b<< endl;
using namespace test;//using namespace之后,可以直接访问
cout << "b of test is :" << b << endl;
return 0;
}
/*
结果:
Hello World!
a of test is :666
b of test is :99.9
b of test is :99.9
*/