Skip to content

第一个C++程序

Tips

C/C++的源代码文件是一个普通的文本文件,C语言扩展名必须是.c ,但C++扩展名可以是.cpp.cxx.hpp.cc

编写代码

打开IDE或者文本编辑器,编写以下代码

cpp
#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.hcmath

由于C使用不同的扩展名来表示不同文件类型,因此用一些特殊的扩展名(如hpphxx)表示C++的头文件也是可以的,ANSI/IOS标准委员会也认为是可以的,但是关键问题是用哪个比较好,最后一致同意不使用任何扩展名

头文件类型约定示例说明
C++旧式风格.h结尾iostream.hC++程序可用
C旧式风格.h结尾math.hC/C++程序可用
C++新式风格无扩展名iostreamC++程序可用,使用 namespace std
转换后的C加上前缀c,无扩展名cmathC++程序可用,可使用非C特性,如 namespace std

问题2:为什么C++没有#include <stdio.h>

C++没有#include <stdio.h>,因为C++没有stdio.h头文件,它被iostream头文件替换。iostream头文件提供了输入输出流功能,包括std::coutstd::cinstd::cerrstd::clogstd::wcoutstd::wcinstd::wcerrstd::wclogstd::endlstd::endsstd::flushstd::wsstd::istream等等,更详细的信息,请参考iostream

问题3:using namespace std; 是什么?

namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。

问题4:coutendl 是什么?

cout是C++中的标准输出流,endl是输出换行并刷新缓冲区。