#include <iostream>
using namespace std;
什么情况下需要加上这两行代码?
如果程序需要输入输出,则需要把这两行代码加上。
#include是什么?
#include是一种编译指令,他的作用是将iostream文件的内容随源代码文件的内容一起发送给编译器。 也可以理解为将#include < iostream >替换成iostream文件的内容。
iostream是什么?
像这一类的文件可以叫做包含文件(include file)或者头文件(header file)
简单了解一下包含文件/头文件
C语言和C++中都有一些头文件,C语言中的头文件的扩展名是'.h',例如math.h支持各种C语言数学函数,但是在C++中去掉了扩展名。那么为了继续使用C语言中包含的头文件,有的去掉了'.h',有的在前面加上'c'(cmath)。 C++编译器也自带了很多头文件。
using namespace std;是什么?
如果#include <iostream>,而不是iostream.h,则应使用using namespace std;名称空间编译指令使iostream中的定义对程序可用。
什么是名称空间
iostream中的cout、endl实际上是std::cout、std:endl;那么前面的std可以将其作为一个姓氏,后面跟的是名字。 名称空间可以理解为这些函数的姓氏,那么在文件起始位置,加入名称空间,那么默认在这些函数前面都加上了std::,也就不需要再重复添加了。
using namespace std;的潜在问题
using namespace std;使得std名称空间中的所有名称都可用。这是一种偷懒的做法,在大型项目中一个潜在的问题。因为项目可能同时使用两个已经封装好的产品,且这两个产品中都包含一个同名函数。例如,Microflop Industries将wanda()定义放到一个名为Microflop的名称空间中,Piscine公司的wanda( )定义到Piscine名称空间中。那么只使用一个名称空间必然会引起冲突。
更好的方法是,只使所需的名称可用,这可以通过使用using声明来实现:
using std::cout;
using std::endl;
using std::cin;
##写在后面
#include <iostream>
using namespace std;
简单讲解了这两行代码。希望你能明白他们的作用。如果还有什么问题,欢迎提问。
TODO: 在原理层面进一步讲解。