以下是 C++ 中常用关键字的分类总结,按功能领域分组:


一、数据类型定义

关键字 作用
int 声明整型变量(通常4字节)
double 声明双精度浮点类型(8字节)
char 声明字符类型(1字节)
bool 声明布尔类型(true/false)
void 表示"无类型"(函数返回值/无参函数/泛型指针)
auto 自动类型推导(C++11起)
decltype 获取表达式类型(C++11)

示例

auto num = 42;          // 推导为 int
decltype(num) count = 10;

二、类型修饰符

关键字 作用
const 定义常量(不可修改)
constexpr 定义编译期常量(C++11)
volatile 防止编译器优化(用于硬件寄存器等)
mutable 允许在const成员函数中修改成员变量
signed 声明有符号类型(默认)
unsigned 声明无符号类型

示例

constexpr int MAX = 100;  // 编译期常量
volatile bool flag = true; // 易变对象

三、流程控制

分支控制 循环控制 跳转控制
if/else for break
switch while continue
case do/while return
default range-for goto(不推荐)
? :(三元运算符)

range-for示例

for (auto& num : {1,2,3}) {  // C++11范围循环
    cout << num << " ";
}

四、存储类别

关键字 作用
static 静态变量(程序生命周期)/ 类静态成员
extern 声明外部定义的变量/函数
thread_local 线程局部存储(C++11)
register 建议编译器将变量放入寄存器(C++17起弃用)
mutable 允许const成员函数修改的成员

五、面向对象

类别 关键字 作用
类定义 class / struct / union 定义类/结构体/联合体
访问控制 public / protected / private 访问权限控制
继承 virtual / override / final 虚函数/显式覆盖/禁止覆盖(C++11)
多态 dynamic_cast / typeid 运行时类型识别(RTTI)
构造/析构 new / delete 动态内存管理
特殊成员 this / operator / friend 当前对象指针/运算符重载/友元声明

示例

class Base {
public:
    virtual void foo() final {} // 禁止覆盖
};

class Derived : public Base {
public:
    void bar() override {}     // 显式覆盖
};

六、异常处理

关键字 作用
try 异常检测代码块
catch 异常捕获
throw 抛出异常
noexcept 声明函数不抛出异常(C++11)

七、模板编程

关键字 作用
template 定义函数/类模板
typename 声明模板类型参数(可替代class
requires 概念约束(C++20)

示例

template<typename T>
requires std::integral<T> // C++20概念
T add(T a, T b) { 
    return a + b; 
}

八、内存模型

关键字 作用
alignas 指定内存对齐要求(C++11)
alignof 获取类型对齐值(C++11)

九、其他重要关键字

关键字 作用
namespace 定义命名空间(防止命名冲突)
using 使用命名空间/类型别名
enum / enum class 定义枚举类型(C++11强类型枚举更安全)
explicit 禁止隐式构造函数转换
sizeof 获取类型/对象大小
asm 内联汇编(平台相关)
module 模块声明(C++20模块系统)

✨ 关键特性说明

  1. const vs constexpr

    • const:运行时常量
    • constexpr:编译期可计算的常量(强制编译器优化)
  2. overridefinal

    • 显式声明覆盖关系(增强代码可读性)
    • 阻止类继承或虚函数覆盖
  3. noexcept优化

    void foo() noexcept; // 承诺不抛异常
    
    • 允许编译器进行深度优化
    • 违反时会直接调用std::terminate()
  4. C++20概念约束

    template<std::floating_point T> // 预定义概念
    T sqrt(T val) { ... }
    
    • 提供编译期接口检查
    • 显著改善模板错误信息

最佳实践建议

  1. 优先使用nullptr替代NULL
  2. constexpr取代宏常量
  3. 面向对象设计使用override/final
  4. 资源管理使用RAII模式而非手动new/delete
posted on 2025-06-27 16:03  青·丝  阅读(21)  评论(0)    收藏  举报