1.3 C++基础语法

C++的基础语法相当繁杂,而且还在不停地更新,这让很多初学者在编写代码的时候花费了很长时间。本书通过大量例子加上通俗易懂的详细讲解,可让读者深入浅出地学习C++。

· 1.3.1 第一个C++项目

下面用Qt开始执行第一个项目HelloWorld吧!

(1)单击“开始”菜单的Qt Creator,运行Qt Creator,单击欢迎界面Projects处的“New”,创建一个新项目(或通过“文件”菜单新建一个新的项目),如图1-8所示。

图1-8 创建项目第1步

(2)单击选择对话框左边的“Non-Qt Project”,然后单击选择“Plain C++ Application”作为模板建立项目,如图1-9所示。

图1-9 创建项目第2步

(3)自定义项目的名称和创建路径,如图1-10所示,输入项目名称“HelloWorld”。

图1-10 创建项目第3步

(4)选择默认编译系统为“qmake”,如图1-11所示,然后单击“下一步”按钮。

图1-11 创建项目第4步

(5)接下来两步都直接单击“下一步”按钮,如图1-12和图1-13所示。然后单击“完成”按钮,如图1-14所示。

图1-12 创建项目第5步

图1-13 创建项目第6步

图1-14 创建项目第7步

(6)在图1-15左侧单击“main.cpp”文件,并编写第一个项目HelloWorld,见例1-1。

图1-15 编写代码图

例1-1:HelloWorld项目。

    #include <iostream>
    using namespace std;
    // main() 是程序开始执行的地方
    int main()
    {
      cout << "Hello World"; // 输出 Hello World
      return 0;
    }

(7)例1-1运行结果如图1-16所示。

图1-16 例1-1运行结果

通过例1-1的代码,我们可以了解如何创建项目、编写代码和运行代码,接下来分析这一段代码。

C++定义了一些头文件,这些头文件包含程序中需要用到的函数。在例1-1中,第1行包含了头文件 <iostream>,iostream指iostream库。iostream的意思是输入/输出流,由in(输入)、out(输出)的首字母与stream(流)组合而成。

第2行,“using namespace std;”告诉编译器使用std命名空间。命名空间是C++中一个相对新的概念,将在1.13节中详细介绍。

第3行,“// main()是程序开始执行的地方”是一个单行注释。单行注释以“//”开始,在行末结束。

程序的注释是解释性语句。可以在C++代码中包含注释,这将提高代码的可读性和可维护性,所有的编程语言都允许某种形式的注释。

C++支持单行注释和多行注释。注释中的所有字符会被C++编译器忽略。

C++多行注释以“/*”开始,以“*/”结束。单行注释以“//”开始,在行末结束。

第4行,“int main()”是主函数,程序从这里开始执行。

第5行, 只有1个“{”,主程序的代码都包含在“{”和“}”中,以“{”开始,以“}”结束。它是表示程序块的分界符,起到的作用主要是划分区域。

第6行,“cout << “Hello World”;”,cout用于在计算机屏幕上显示信息,是C++中iostream 类型的对象,这行语句的运行结果是在屏幕上显示消息“Hello World”。 与cout对应的cin代表标准输入设备,使用提取运算符“>>”从键盘取得数据,二者都需要iostream.h支持。

第7行,“return 0; ”终止main()函数,并向调用进程返回值0。一般return 0表示程序运行正常并结束;而return -1表示返回一个代数值,一般用在子函数结尾,按照程序开发的惯例,表示该函数失败。在C++中,“;”是语句结束符,也就是说,每个语句必须以“;”结束。

第8行,以“}”结束。

· 1.3.2 C++关键字

表1-1所示为C++中的关键字。这些关键字不能作为常量名、变量名或其他标识符名。

表1-1 C++中的关键字

asm

else

new

this

auto

enum

operator

throw

bool

explicit

private

true

break

export

protected

try

case

extern

public

typedef

catch

false

register

typeid

char

float

reinterpret_cast

typename

class

for

return

union

const

friend

short

unsigned

const_cast

goto

signed

using

continue

if

sizeof

virtual

default

inline

static

void

delete

int

static_cast

volatile

do

long

struct

wchar_t

double

mutable

switch

while

dynamic_cast

namespace

template