菜鸟问一句,头文件和标准库的关系和区别
如使用string,需要#include<string>,using std::string。这两个有什么关系和区别呢。头文件不就是定义string类,及其相关操作吗?怎么还要引入标准库,我感觉这两个作用差不多啊。
[解决办法]
#include<string>
包含头文件
using std::string
使用命名空间std中的名字string
作用差不多?
这俩根本就不是一个领域的东西,真心不明白它们的啥作用差不多
包含头文件,可以理解为将头文件中的代码直接复制到包含处
函数的声明等等可能在多个源文件中使用的东西,一般放在头文件里,以方便一次书写多次使用,保证各源文件内相关代码的同步
不包含相关头文件的话,则编译器在编译该源文件时,可能会不理解其中的一些标识符是什么意义从而报错
命名空间是C++专有的,因为工程越大标识符越多,可能会导致不同程序员或不同时期的代码当中有相同的标识符(例如程序员A定义了一个函数ABC,程序员B在另一个模块里定义了一个变量ABC,程序员C需要同时使用前两个程序员写下的代码,于是标识符冲突)。为此C++添加了命名空间,例如标准库里的所有标识符都放在std命名空间里,如果你要使用标准库里的标识符,必须在每个标识符前加std::XXX,或者在使用前宣布using std::XXX。