C++关键字

物理
C++关键字

用户头像
质心用户7292 更新于2025-7-24 04:03:07

C++常用关键字参考手册

返回

基础类型

关键字说明
int整型(如 int a = 5;
char字符型(如 char c = 'A';
float单精度浮点数
double双精度浮点数
bool布尔值(true/false
void空类型(函数无返回值时使用)

类型修饰符

关键字说明
const定义常量(不可修改)
unsigned无符号类型(如 unsigned int
signed有符号类型(默认)
volatile防止编译器优化(多线程/硬件)
mutable允许在 const 成员函数中修改成员

流程控制

关键字说明
if/else条件分支
switch多路分支
caseswitch 的分支标签
defaultswitch 的默认分支
for循环
while循环
do循环(至少执行一次)
break跳出循环/switch
continue跳过当前循环的剩余代码
return从函数返回

函数相关

关键字说明
inline建议编译器内联展开函数
virtual声明虚函数(支持多态)
override显式覆盖基类虚函数(C++11)
final禁止派生类覆盖(C++11)
auto自动类型推导(C++11)
decltype查询表达式类型(C++11)

内存管理

关键字说明
new动态内存分配
delete释放动态内存
sizeof获取对象/类型大小(字节)

类与面向对象

关键字说明
class定义类
struct定义结构体(默认公有继承)
public公有成员访问权限
private私有成员访问权限
protected保护成员访问权限
friend友元(允许访问私有成员)
this指向当前对象的指针
operator重载运算符
explicit禁止隐式构造函数转换
template定义模板(泛型编程)

异常处理

关键字说明
try尝试执行可能抛出异常的代码块
catch捕获并处理异常
throw抛出异常

命名空间

关键字说明
namespace定义命名空间(防止命名冲突)
using引入命名空间或类型别名

其他重要关键字

关键字说明
static静态变量/函数(类内共享)
extern声明外部全局变量
constexpr编译期常量(C++11)
nullptr空指针(替代 NULL,C++11)
typename模板中声明依赖类型

代码示例

// ================ C++常用关键字示例 ================
// 此文件展示了C++核心关键字的用法
// 编译命令:g++ -std=c++17 keywords_demo.cpp -o demo

#include <iostream>
#include <vector>
#include <stdexcept>

// ===== 1\. 基础类型 & 类型修饰符 =====
const double PI = 3.14159;           // const常量
volatile int sensorValue;            // volatile防止优化

void basicTypes() {
    int integer = 42;                // int整型
    char letter = 'A';               // char字符
    float ratio = 0.618f;            // float浮点
    double pi = PI;                  // double浮点
    bool flag = true;                // bool布尔

    unsigned int positive = 100;     // unsigned无符号
    signed int normal = -50;         // signed有符号(默认)

    std::cout << "int: " << integer << ", char: " << letter << "\n";
}

// ===== 2\. 类 & 面向对象 =====
class Base {
public:                             // public访问权限
    virtual void print() const {    // virtual虚函数
        std::cout << "Base class\n";
    }
};

class Derived final : public Base { // final禁止继承
private:                            // private访问权限
    mutable int counter;            // mutable允许const修改
protected:                          // protected访问权限
    int id;
public:
    explicit Derived(int id) : id(id) {} // explicit禁止隐式转换

    void print() const override {   // override显式覆盖
        counter++;
        std::cout << "Derived " << id << "\n";
    }

    friend void friendFunc();       // friend友元函数
};

void friendFunc() {
    Derived d(99);
    d.counter = 0;  // 友元可访问private成员
}

// ===== 3\. 函数相关 =====
inline int add(int a, int b) {      // inline内联函数
    return a + b;
}

auto autoFunc() {                   // auto自动类型推导
    return "Hello from auto";
}

decltype(auto) declFunc() {         // decltype类型查询
    return add(2, 3);
}

// ===== 4\. 内存管理 =====
void dynamicMemory() {
    int* arr = new int[10];         // new动态分配
    delete[] arr;                   // delete释放内存
}

// ===== 5\. 流程控制 =====
void controlFlow(int x) {
    // if-else
    if (x > 100) {
        std::cout << "Large\n";
    } else {
        std::cout << "Small\n";
    }

    // switch
    switch(x) {
        case 0: std::cout << "Zero"; break;
        default: std::cout << "Non-zero"; break;
    }

    // for循环
    for (int i = 0; i < 5; ++i) {
        if (i == 2) continue;      // continue跳过当前
        std::cout << i << " ";
    }

    // while
    while (x > 0) {
        --x;
        if (x == 5) break;          // break跳出循环
    }

    // do-while
    do {
        x++;
    } while (x < 10);
}

// ===== 6\. 模板编程 =====
template <typename T>               // template模板
T max(T a, T b) {
    return (a > b) ? a : b;
}

template<typename U>
using Vec = std::vector<U>;         // using类型别名

// ===== 7\. 异常处理 =====
void riskyOperation() {
    try {
        throw std::runtime_error("Oops!"); // throw抛出异常
    } 
    catch (const std::exception& e) {   // catch捕获异常
        std::cerr << "Error: " << e.what();
    }
}

// ===== 8\. 命名空间 =====
namespace MyLib {                  // namespace命名空间
    void log() { std::cout << "Logging\n"; }
}

// ===== 9\. 其他关键字 =====
static int counter;                // static静态变量

constexpr int factorial(int n) {   // constexpr编译期计算
    return (n <= 1) ? 1 : n * factorial(n - 1);
}

// ===== 主函数 =====
int main() {
    // 基础类型
    basicTypes();

    // 类与继承
    Derived d1(1);
    Base* b = &d1;
    b->print();

    // 函数特性
    std::cout << add(3, 4) << "\n";
    std::cout << autoFunc() << "\n";

    // 内存管理
    dynamicMemory();

    // 流程控制
    controlFlow(42);

    // 模板
    std::cout << max(3.14, 2.71) << "\n";
    Vec<int> nums = {1, 2, 3};

    // 异常
    riskyOperation();

    // 命名空间
    using namespace MyLib;          // using指令
    log();

    // 其他
    constexpr int fact5 = factorial(5);
    sizeof(int);                    // sizeof获取大小

    return 0;                      // return返回
}

收起
5
4
共2条回复
时间正序
用户头像
质心用户7292
1天前
用户头像
Silicon(硅)『对酒当歌』
20小时前
服了,表格在平板上显示不出来
1条评论
用户头像
‡『酒声』凌光☽‡
15小时前

可以用图片