很多程序在开始部分都会加上一句using namespace std,这是什么意思啊?
很多程序在开始部分都会加上一句using namespace std,这是什么意思啊?
《The C++ Programming Language 3rd Ed》:
The standard library is defined in a namespace called s t d. You must either use the s t d :: prefix ,for example:
#i n c l u d e <s t r i n g > // make the standard string facilities accessible
s t d :: s t r i n g s = "F o u r l e g s G o o d ; t w o l e g s B a a a d !";// ok: string is std::string
or make every name from s t d global,for example:
#i n c l u d e <s t r i n g > // make the standard string facilities accessible
u s i n g n a m e s p a c e s t d ; // make std names available without std:: prefix
s t r i n g s = "I g n o r a n c e i s b l i s s !"; // ok: string is std::string
[此贴子已经被作者于2006-3-17 21:55:16编辑过]
::这两个冒号叫 作用域运算符
using namespace std;是名称空间编译指令,
名称空间支持是C++里比较新的特性,它是为了使编写将多个厂商已有的代码组合起来的程序更简单而设计的。一个潜在的问题就是:可能使用两个已封装好的产品,而他们都包含一个名为wanda()的函数。这样使用wanda()函数时。编译器将不知道指的是哪个版本。名称空间让厂商能够将其产品封装在一个叫做名称空间的单元中,这样就可以用名称空间的名称来指出想使用哪个厂商的产品。因此,microflop industries 可以将其定义放到一个名为microflop的名称空间,这样,其wanda()函数的全名为microflop::wanda()同样,piscine公司的wanda()版本可以表示为piscine::wanda()。这样,程序就可以使用名称空间来区分不同的版本了:microflop::wanda() piscine::wanda()
意思就是这些函数前都带有一个名称空间,如果在程序开始前使用了using namespace std;的话就不用在函数前加公司名称了。直接用wanda()