C++语法基础 #

一、注释 #

注释用于解释代码,编译器会忽略注释内容。

1.1 单行注释 #

cpp
// 这是单行注释
int x = 10;  // 这也是单行注释

1.2 多行注释 #

cpp
/*
 * 这是多行注释
 * 可以跨越多行
 * 用于较长的说明
 */
int main() {
    return 0;
}

1.3 注释最佳实践 #

cpp
// 好的注释:解释为什么
// 使用二分查找提高搜索效率,时间复杂度O(log n)
int binarySearch(int arr[], int size, int target) {
    // ...
}

// 不好的注释:重复代码内容
// 设置x等于10
int x = 10;

1.4 文档注释(Doxygen风格) #

cpp
/**
 * @brief 计算两个整数的和
 * @param a 第一个整数
 * @param b 第二个整数
 * @return 两数之和
 * 
 * @example
 * int result = add(3, 5);  // result = 8
 */
int add(int a, int b) {
    return a + b;
}

/**
 * @class Person
 * @brief 表示一个人的类
 */
class Person {
public:
    std::string name;  ///< 姓名
    int age;           ///< 年龄
};

二、标识符 #

标识符用于命名变量、函数、类等。

2.1 命名规则 #

  • 只能使用字母、数字、下划线
  • 必须以字母或下划线开头
  • 不能使用关键字
  • 区分大小写
cpp
// 合法标识符
int age;
int _count;
int userName;
int user_name;
int User123;

// 非法标识符
int 2name;       // 不能以数字开头
int my-name;     // 不能包含连字符
int int;         // 不能使用关键字
int @email;      // 不能包含特殊字符

2.2 命名规范 #

变量命名 #

cpp
// 小写字母+下划线(推荐)
int user_age;
std::string user_name;

// 驼峰命名法
int userAge;
std::string userName;

常量命名 #

cpp
// 全大写+下划线
const int MAX_SIZE = 100;
const double PI = 3.14159;
constexpr int BUFFER_SIZE = 1024;

函数命名 #

cpp
// 小写+下划线 或 驼峰
void print_hello();
void printHello();
int get_user_age();
int getUserAge();

类命名 #

cpp
// 大驼峰(Pascal Case)
class UserInfo {};
class StudentManager {};
class HttpRequest {};

宏命名 #

cpp
// 全大写+下划线
#define MAX_BUFFER_SIZE 1024
#define DEBUG_MODE 1

2.3 命名建议 #

cpp
// 好的命名:有意义、描述性强
int studentCount;
std::string emailAddress;
bool isValid;
double averageScore;

// 不好的命名:无意义、缩写过度
int n;
std::string s;
bool flag;
double avg;

三、关键字 #

C++关键字是语言保留的单词,不能用作标识符。

3.1 C++关键字列表 #

基本关键字 #

关键字 说明
int 整数类型
char 字符类型
float 单精度浮点
double 双精度浮点
bool 布尔类型
void 无类型
auto 自动类型推导
const 常量

控制流关键字 #

关键字 说明
if 条件判断
else 否则分支
switch 开关语句
case case标签
default 默认分支
for for循环
while while循环
do do-while循环
break 跳出循环
continue 继续循环
return 返回
goto 跳转

函数相关关键字 #

关键字 说明
inline 内联函数
virtual 虚函数
override 重写
final 最终
static 静态
extern 外部链接
constexpr 常量表达式

类相关关键字 #

关键字 说明
class
struct 结构体
public 公有
private 私有
protected 保护
friend 友元
this 当前对象指针
new 动态分配
delete 动态释放
operator 运算符重载

模板相关关键字 #

关键字 说明
template 模板
typename 类型名
class 模板参数

异常相关关键字 #

关键字 说明
try 异常捕获块
catch 异常处理器
throw 抛出异常
noexcept 无异常说明

C++11/14/17/20新关键字 #

关键字 版本 说明
nullptr C++11 空指针
decltype C++11 类型推导
static_assert C++11 静态断言
thread_local C++11 线程局部存储
alignas C++11 对齐说明
alignof C++11 对齐查询
noexcept C++11 异常说明
constexpr C++11 常量表达式
concept C++20 概念
requires C++20 约束
co_await C++20 协程等待
co_yield C++20 协程产出
co_return C++20 协程返回

3.2 关键字使用示例 #

cpp
#include <iostream>

// const 常量
const int MAX_SIZE = 100;

// constexpr 编译期常量
constexpr int SQUARE(int x) { return x * x; }

// auto 自动类型推导
auto add(int a, int b) -> int {
    return a + b;
}

// class 类定义
class Student {
public:     // 公有成员
    Student(std::string n) : name(n) {}
    
    virtual void print() {  // 虚函数
        std::cout << name << std::endl;
    }
    
private:    // 私有成员
    std::string name;
};

// template 模板
template<typename T>
T maxValue(T a, T b) {
    return (a > b) ? a : b;
}

int main() {
    // auto 推导
    auto x = 10;          // int
    auto y = 3.14;        // double
    auto s = "hello";     // const char*
    
    // nullptr 空指针
    int* ptr = nullptr;
    
    // constexpr
    constexpr int val = SQUARE(5);  // 编译期计算
    
    return 0;
}

四、分隔符 #

4.1 语句结束符 #

cpp
int x = 10;  // 分号结束语句

4.2 花括号 #

cpp
// 代码块
{
    int x = 10;
}

// 函数体
int main() {
    return 0;
}

// 类定义
class MyClass {
};

// 初始化列表
int arr[] = {1, 2, 3};

4.3 圆括号 #

cpp
// 函数调用
func();

// 条件表达式
if (x > 0) { }

// 循环
for (int i = 0; i < 10; i++) { }

// 类型转换
double d = (double)10;

4.4 方括号 #

cpp
// 数组下标
int arr[10];
arr[0] = 1;

// Lambda捕获列表
auto f = [x]() { return x * 2; };

// 模板参数(新语法)
std::vector<int> vec;

4.5 逗号 #

cpp
// 变量声明
int a = 1, b = 2, c = 3;

// 函数参数
void func(int x, int y);

// 数组初始化
int arr[] = {1, 2, 3};

五、空白符 #

空白符包括空格、制表符、换行符,用于分隔代码元素。

5.1 必须使用空白符的情况 #

cpp
// 关键字与标识符之间
int x;

// 类型与变量名之间
double value;

// 运算符两侧(推荐)
int sum = a + b;

5.2 可选空白符 #

cpp
// 以下写法都正确
int x=10;
int x = 10;
int x  =  10 ;

// 函数参数
func(a,b);
func(a, b);

5.3 空白符不能出现的地方 #

cpp
// 不能在标识符中间
int user name;  // 错误

// 不能在运算符中间
int x = 10 + + 5;  // 错误,应该是 10 + 5 或 10 + (+5)

六、表达式与语句 #

6.1 表达式 #

表达式是由运算符和操作数组成的式子,可以计算出一个值。

cpp
// 算术表达式
a + b
x * y + z

// 关系表达式
a > b
x == y

// 逻辑表达式
a && b
x || y

// 赋值表达式
x = 10

// 函数调用表达式
func(a, b)

6.2 语句 #

语句是程序的最小执行单位,以分号结尾。

cpp
// 声明语句
int x;

// 赋值语句
x = 10;

// 表达式语句
a + b;

// 空语句
;

// 复合语句(代码块)
{
    int x = 10;
    x = x + 1;
}

// 控制语句
if (x > 0) { }
for (int i = 0; i < 10; i++) { }

七、代码规范 #

7.1 缩进 #

cpp
// 推荐:4空格缩进
int main() {
    if (true) {
        for (int i = 0; i < 10; i++) {
            std::cout << i << std::endl;
        }
    }
    return 0;
}

7.2 行长度 #

cpp
// 每行不超过80-120字符
// 长行可以换行
int result = veryLongFunctionName(
    parameter1,
    parameter2,
    parameter3
);

7.3 空行 #

cpp
#include <iostream>

// 函数之间空一行
void func1() {
    // ...
}

void func2() {
    // ...
}

int main() {
    // 逻辑块之间空一行
    int x = 10;
    
    // 处理x
    x = x * 2;
    
    // 输出结果
    std::cout << x << std::endl;
    
    return 0;
}

7.4 代码对齐 #

cpp
// 变量声明对齐
int    count    = 0;
double average  = 0.0;
char   initial  = 'A';

// 注释对齐
int x;       // x坐标
int y;       // y坐标
int width;   // 宽度
int height;  // 高度

八、总结 #

语法要点 #

概念 说明
注释 // 单行,/* */ 多行
标识符 字母、数字、下划线,不能以数字开头
关键字 保留字,不能用作标识符
分隔符 ; {} () [] ,
语句 以分号结尾

命名规范 #

类型 规范 示例
变量 小写+下划线 user_name
常量 全大写+下划线 MAX_SIZE
函数 小写+下划线/驼峰 getUserName()
大驼峰 UserInfo
全大写+下划线 DEBUG_MODE

下一步,让我们学习C++的数据类型!

最后更新:2026-03-26