第二章、初步认识 C++ 语言

本章我们将从最简的C++语言程序开始了解 C++ 语言的语法规则、编写、编译及运行。

同 C 语言一样,C++程序需要使用文本编辑器进行编写,然后使用编译器将其编译成计算机能够识别的机器指令

注:不同的计算机需要使用不同的编译器进行编译。

C++ 语言的源文件的后缀通常是 .cpp 结尾。也可以使用 .cxx.cc.C 等作为 C++ 源文件的后缀名。本教程统一使用 .cpp 作为 C++ 的源程序文件的后缀。

1. 从 Hello World 开始

编写第一个 C++ 语言程序

使用编辑器编写一个文件 hello.cpp

内容如下:

#include <iostream>

int main(int argc, char * argv[]) {
    std::cout << "Hello World!" << std::endl;
    return 0;
}

在 Linux 下可以使用 Vim文本编辑器 编写。

使用 gcc 编译这个文本文件成为可执行文件。

打开一个 UNIX 或 Linux 终端,在终端中找到这个 hello.cpp 文件的位置。然后执行 g++ hello.cpp 来编译这个 hello.cpp 文件。如下所示:

weimz@mzstudio:~$ g++ hello.cpp 
weimz@mzstudio:~$ ls
a.out  hello.cpp

可见此时多了一个可执行文件 a.out

如果你是使用 MacOS 系统或 Windows 系统下的其它 C 语言开发环境。请找到相关的方法进行编译和运行。

在 Linux 运行编译后的可执行程序

weimz@mzstudio:~$ ./a.out 
Hello World!

此时你可以看见在终端中打印了一行 Hello World!。至此你已经生成了第一个 C++ 语言编写的可执行程序(a.out)。

对比 C 语言编写同样功能的程序如下:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello World!\n");
    return 0;
}

从上述示例中我们能够看出 C 语言和 C++ 语言都使用标准 C 的程序入口函数 main 函数,并且返回值了类型和含义也同标准 C 语言的返回值意义完全相同。

我们发现在 C++ 语言中 #include <iostream> 代替了 C 语言中的 #include <stdio.h>,头文件 iostream 是 C++ 标准库中用于声明标准输入输出的头文件之一。

C++ 标准库中的头文件都是没有后缀名的头文件,这样做的目的是避免 C++ 头文件和 C 语言的头文件冲突。

再来看打印 Hello World!std::cout << "Hello World!" << std::endl; 他的功能和 C 语言中的 printf("Hello World!\n"); 是完全一样的。 其中 cout 是负责标准输出的一个变量(C++中叫对象),我们将字符串 "Hello World!" 通过 << 这个左移运算符 交给变量cout,则这个字符串则会打印到控制台终端中。其中 std 是 C++ 标准库中的名字空间(后面才讲)。:: 是名字空间的说明符,std::cout 表示名字空间 std 中的 cout变量(对象)。 std::endlstd 中的换行符 endl,它等同于 "\n",因为字符串 "Hello World!" 中并没有换行符。我们将输出 Hello World! 的一行改成 std::cout << "Hello World!"; ,则打印后则不会换行。如果你想再打印后直接换行也可以写成 std::cout << "Hello World!\n"; ,将 换行符 \n 放在字符串中。

我们先将 C++ 了解 到这里,接下来我们完成下面的实验。

实验:

  1. 编写上述 hello.cpp 然后编译运行。
  2. hello.cpp 中的内容全部更换成 C 语言代码如下,然后编译运行,看能否运行?为什么?
#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello World!\n");
    return 0;
}