一个新手在学习几天后终于稍微弄清楚的一些东西…
首先是 c++项目里,头文件.h和源文件cpp的编译顺序.
当你创建了一个类似这样的c++项目
这是我三个文件的代码. c++是怎么工作的?
它会根据我include的顺寻,把t1.h和t2.h中的代码复制在main.cpp里,就像"查找-替换"一样,把#include "t2.h"换成t2.h里的所有代码.
所以这里我的main.cpp里第9行的cout没有报错.因此把t1.h中的代码复制过来的时候,就已经using name space std; 了.
其次就是关于命名空间的理解.
iosteam里,有一个这样的结构
namespace std
{
…
…
}
什么cout,cin,endl等等的定义全在这里面.(我暂时是这么理解的…可能有错误…希望大佬指点)
那我这里为什么会报错?因为在cpp里,命名空间一旦使用了,就不能再停用,我先用namespace1,再停用namespace1;这样不行.
改成这样就不会报错了