第一个C++程序
Tips
C/C++的源代码文件是一个普通的文本文件,C语言扩展名必须是.c
,但C++扩展名可以是.cpp
、.cxx
、.hpp
、.cc
。
编写代码
打开IDE或者文本编辑器,编写以下代码
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
return 0;
}
代码分析
与C语言版本helloworld的主要区别在于输出语句使用std::cout
,而不是printf
,并且输出语句需要包含头文件#include <iostream>
而不是#include <stdio.h>
。
其中std::cout
是C++标准库的输出流对象,它与printf
一样,可以输出各种数据类型。 在C++中,std::cout
是一个对象,它属于std
命名空间,std
命名空间是C++标准库的根命名空间,它包含了许多标准库的函数和类。关于命名空间的更多信息,请参考命名空间。
问题1:C++头文件为什么没有.h
后缀名?
在C语言中头文件使用扩展名.h
,将其作为一种通过名称标识文件类型的简单方式。但是C++的用法改变了,C++头文件没有扩展名。但是有些C语言的头文件被转换为C++的头文件,这些文件被重新命名,丢掉了扩展名.h
(使之成为C++风格头文件),并在文件名称前面加上前缀C(表明来自C语言)。例如C++版本的math.h
为cmath
。
由于C使用不同的扩展名来表示不同文件类型,因此用一些特殊的扩展名(如hpp
或hxx
)表示C++的头文件也是可以的,ANSI/IOS标准委员会也认为是可以的,但是关键问题是用哪个比较好,最后一致同意不使用任何扩展名。
头文件类型 | 约定 | 示例 | 说明 |
---|---|---|---|
C++旧式风格 | 以.h 结尾 | iostream.h | C++程序可用 |
C旧式风格 | 以.h 结尾 | math.h | C/C++程序可用 |
C++新式风格 | 无扩展名 | iostream | C++程序可用,使用 namespace std |
转换后的C | 加上前缀c ,无扩展名 | cmath | C++程序可用,可使用非C特性,如 namespace std |
问题2:为什么C++没有#include <stdio.h>
?
C++没有#include <stdio.h>
,因为C++没有stdio.h
头文件,它被iostream
头文件替换。iostream
头文件提供了输入输出流功能,包括std::cout
,std::cin
,std::cerr
,std::clog
,std::wcout
,std::wcin
,std::wcerr
,std::wclog
,std::endl
,std::ends
,std::flush
,std::ws
,std::istream
等等,更详细的信息,请参考iostream。
问题3:using namespace std;
是什么?
namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。
问题4:cout
和 endl
是什么?
cout是C++中的标准输出流,endl是输出换行并刷新缓冲区。