施工提示

本博文尚在施工中,内容并未完成且可能变更。

速查:C++ 语法

提示

本章是 C++ 基础语法的总结,适用于有其他编程语言经验的读者快速熟悉 C++ 语法。

C++ 基础语法包括:

  • 语句以分号 ; 结束。

  • 语句块以一对花括号 {...} 标识范围。缩进与换行并不重要。

  • 注释:

    • 行内注释: // 将其同一行内右侧的内容标记为注释。

    • 多行注释: 包含在 /**/ 内部的内容标记为注释。

      • 多行注释不支持嵌套,因此在调试中注释掉多行代码时,推荐用行内注释的方式注释每一行。

  • 变量类型

    • 常量 const

      • 要在多个文件中共享常量,在头文件声明中使用 extern,在源文件定义中使用 extern 并将其初始化。

    • 浮点数:一般使用 double 而不是 float。

    • 整数:通常使用 int

    • 字符(char)与字符串(std::string):

      • 字符使用单引号(如 'a'),字符串使用双引号(如 "abc")。不可混用。

      • 需转义的字符:引号 '、双引号 "、问号 ?与反斜线 \

      • C++ 字符串允许跨行:如果两个字符串之间只有空白符(空格、缩进或换行),那么它们是一个整体。

      • C++ 字符串的实际长度为字面长度加 1,因为它总包含一个末尾的 \0 字符。

        • 字符串 s 的 s.size() 返回字面长度,如 string s = 'abc'; 得到 s.size() 为 3

        • s.size() 将返回一个 string::size_type 类型的无符号整数;因此,不要将其与带符号数进行运算,例如 int n = -1; 将通常导致 s.size() < n 为 true。

        • 字符串 s 合法索引 i 应满足 0 <= i < s.size()

      • 我们常提到 C 风格字符串,它的类型是 const char*,即常量字符指针。

      • C++ 的字符串字面值并不属于 std::string 类型,而是常量字符数组。

    • 引用:引用不是对象,只是对象的别名。引用在声明时给标识符添加 & 前缀。

    • 指针:指针记录对象的地址。指针在声明时给标识符添加 * 前缀。

      • 指针在初始化或赋值时,赋值号右侧使用取地址符 &

      • 指针在调用指向对象时,使用解引用符 *

      • 常量指针 Type *const p,指向常量的指针 const Type *p

  • 控制语句:

    • for 循环:循环变量在循环体结束后不可使用。

      • 范围 for 循环 C++ 11 对可迭代对象进行迭代,无需循环变量

    • if 条件:支持 else if 分支语句块。

    • switch 条件:

      • case 标签必须是整型常量表达式

      • 每个 case 标签内部一般均用 break; 结尾。

      • default: 处理未匹配任何 case 标签的情形。

    • try..catch 及 throw 语句:

      • 常使用 <stdexcept> 库中定义的异常。基础的为 std::runtime_error

      • 使用 err.what() 来检查错误对象 err 中包含的异常信息。

      • throw 抛出的异常如果没有被捕获,程序将会终止。程序中任何之后的内容都不会再被执行。