关于std、cin、cout
std是命名空间我知道,但是std是不是包含在iostream库里面的?
书上说库包含在命名空间里,是什么意思?
cin和cout是标准库里的还是std命名空间的里的?
为什么编程时只导入一个标准库,但还要指定使用哪个命名空间,难道C++默认有多个命名空间?
问题比较多,我给了80分。
[最优解释]
iostream是在命名空间std里面,不是std在iostream里面
每个库中的变量和类声明和定义时都在一个namespace std {};中,使用时都要加std::才能引用
cin和cout也是在std里面定义的
虽然STL只有一个std命名空间,但是使用时仍然要指定,同时,楼主自己也可以命名一个变量与STL的某个变量相同,命名空间,就可以区分到底是哪个下面的库了
[其他解释]
采用命名空间的方法,可以避免一些名字冲突.
如你定义一个名为mynamespace的命名空间,可以在其中定义一个和标准库相同名字的函数,如cout,那么你引用的时候可以用
mynamespace::cout来使用.
建议lz多看书,可以获得更全面系统的了解.
[其他解释]
库就是库,基本上可以看成是一组对象cin和函数printf和类ifstream的集合,但是不管是对象/函数还是类,它总有个名字,是名字就有可能有冲突,所以才有命名/名字空间这么一说,这样一来,相同的名字在不同的空间下,表示了不同的东西,解决了冲突。名字空间只是名字的集合,库是对象,函数,类的集合,就是这样。
可以认为namespace是个容器,用来装名字的,不同的库的名字可以装在一起的,最典型的就是C++的std,其中有C库(std::printf),C++库如IO(std::cout << std::endl),还有STL(std::vector).
std是命名空间我知道,但是std是不是包含在iostream库里面的?
// 所以说,不是,这两者不存在包含关系
书上说库包含在命名空间里,是什么意思?
// 是指库的东西的名字,包含在namespace中
cin和cout是标准库里的还是std命名空间的里的?
// 它们是标准库的内容,名字在std中。
为什么编程时只导入一个标准库,但还要指定使用哪个命名空间,难道C++默认有多个命名空间?
如果你还用过其他的C++库比如boost,那么写程序的时候就会是:
using namespace std;
using namespace boost;
[其他解释]
主要就是为了避免命名冲突,使用方法看下面(MyPlugin是一个命名空间):
namespace MyPlugin
{
class CPlugin_U7Meeting_AVInfo :
public IPlugin_U7Meeting_AVInfo
{
public:
CPlugin_U7Meeting_AVInfo(void);
~CPlugin_U7Meeting_AVInfo(void);
.................
};
}