C++ 参考手册:程序员的终极速查指南 – wiki词典

C++ 参考手册:程序员的终极速查指南

引言

C++ 是一门功能强大、应用广泛的编程语言,从系统级软件到高性能计算,再到游戏开发,无处不在。然而,其复杂的语法和庞大的标准库也常常让开发者感到头疼。本指南旨在成为 C++ 程序员的终极速查手册,提供核心语法、标准库和现代特性的快速参考,帮助您在日常开发中提高效率。


1. 基本语法 (Basic Syntax)

1.1 变量与数据类型 (Variables & Data Types)

类型 描述 示例
int 整型 int a = 10;
double 双精度浮点 double pi = 3.14159;
char 字符 char initial = 'C';
bool 布尔值 bool is_ready = true;
std::string 字符串 std::string msg = "Hello";
auto 自动类型推导 auto x = 42; // x is int

修饰符: const, static, unsigned

cpp
const double EULER = 2.718;
static int counter = 0;

1.2 运算符 (Operators)

  • 算术: +, -, *, /, %
  • 关系: ==, !=, <, >, <=, >=
  • 逻辑: && (and), || (or), ! (not)
  • 位: &, |, ^, ~, <<, >>
  • 赋值: =, +=, -=, *=, /=
  • 其他: sizeof(), ? : (三元), . (成员访问), -> (指针访问)

1.3 控制流 (Control Flow)

if-else
cpp
if (condition) {
// ...
} else if (other_condition) {
// ...
} else {
// ...
}

switch
cpp
switch (variable) {
case value1:
// ...
break;
case value2:
// ...
break;
default:
// ...
}

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

范围for循环 (C++11)
“`cpp

include

std::vector nums = {1, 2, 3};
for (int num : nums) {
// …
}
“`

while循环
cpp
while (condition) {
// ...
}

1.4 函数 (Functions)

“`cpp
// 声明
return_type function_name(parameter_type parameter_name);

// 定义
return_type function_name(parameter_type parameter_name) {
// 函数体
return value;
}

// 示例:返回两数之和
int add(int a, int b) {
return a + b;
}
“`


2. 面向对象编程 (Object-Oriented Programming)

2.1 类与对象 (Classes & Objects)

“`cpp
class MyClass {
public:
// 构造函数
MyClass(int val) : my_var(val) {}

// 成员函数
void my_method() const {
    // const 成员函数不能修改成员变量
}

// 静态成员变量
static int static_var;

private:
// 成员变量
int my_var;
};

// 静态成员变量初始化
int MyClass::static_var = 0;

// 创建对象
MyClass obj(42);
“`

  • 访问修饰符:
  • public: 任何地方都可访问。
  • private: 只能在类内部访问。
  • protected: 类内部及子类可访问。

2.2 继承与多态 (Inheritance & Polymorphism)

“`cpp
// 基类
class Shape {
public:
// 虚函数
virtual void draw() const { // }
// 纯虚函数(使基类成为抽象类)
virtual double area() const = 0;
// 虚析构函数
virtual ~Shape() = default;
};

// 派生类
class Circle : public Shape {
public:
void draw() const override { // }
double area() const override { // }
};
``
-
override(C++11): 显式覆盖基类虚函数。
-
final` (C++11): 阻止进一步的类继承或虚函数覆盖。


3. 标准模板库 (Standard Template Library – STL)

3.1 常用容器 (Common Containers)

容器 头文件 描述
std::vector <vector> 动态数组,随机访问快
std::string <string> 字符序列
std::map <map> 键值对集合,按键排序
std::unordered_map <unordered_map> 哈希实现的键值对集合
std::set <set> 唯一元素集合,自动排序
std::deque <deque> 双端队列

Vector 示例
“`cpp

include

std::vector vec;
vec.push_back(10); // [10]
vec.push_back(20); // [10, 20]
int first = vec[0]; // 10
for (int val : vec) { // }
“`

Map 示例
“`cpp

include

std::map ages;
ages[“Alice”] = 30;
ages[“Bob”] = 25;
int alice_age = ages[“Alice”]; // 30
“`

3.2 常用算法 (Common Algorithms)

需要包含 <algorithm> 头文件。

算法 描述
std::sort 对容器或数组排序
std::find 在序列中查找值
std::for_each 对序列中每个元素执行操作
std::count 统计序列中特定值的出现次数
std::copy 复制序列
std::reverse 反转序列

“`cpp

include

include

std::vector v = {3, 1, 4};
std::sort(v.begin(), v.end()); // v becomes {1, 3, 4}

auto it = std::find(v.begin(), v.end(), 4);
if (it != v.end()) {
// 找到了
}
“`

3.3 智能指针 (Smart Pointers)

需要包含 <memory> 头文件,用于自动管理内存,防止内存泄漏。

指针 描述
std::unique_ptr 独占所有权的智能指针,无法复制
std::shared_ptr 共享所有权的智能指针,通过引用计数管理生命周期
std::weak_ptr shared_ptr 的观察者,不增加引用计数,防止循环引用

cpp
// C++14 and later
std::unique_ptr<int> p1 = std::make_unique<int>(10);
std::shared_ptr<int> p2 = std::make_shared<int>(20);


4. 现代 C++ 特性 (Modern C++ Features)

4.1 Lambda 表达式

一种在代码中定义匿名函数对象的便捷方式。

“`cpp
// 捕获列表 -> 返回类型 { 函数体 }
auto add = -> int {
return a + b;
};
int sum = add(5, 3); // sum is 8

std::vector nums = {1, 2, 3};
int x = 10;
// 按值捕获x,按引用捕获所有其他变量
std::for_each(nums.begin(), nums.end(), x, &{
n += x;
});
“`

4.2 nullptr

C++11 引入 nullptr 来代替 NULL,它是一个类型安全的空指针常量。

“`cpp
void foo(int);
void foo(char*);

foo(NULL); // 可能调用 foo(int)
foo(nullptr); // 调用 foo(char*)
“`


5. 输入/输出 (Input/Output)

5.1 控制台 I/O

需要包含 <iostream>

“`cpp

include

include

int main() {
int age;
std::string name;

std::cout << "Enter your name: ";
std::getline(std::cin, name); // 读取整行

std::cout << "Enter your age: ";
std::cin >> age;

std::cout << "Hello, " << name << "! You are " << age << " years old." << std::endl;
return 0;

}
“`

5.2 文件 I/O

需要包含 <fstream>

写文件
“`cpp

include

std::ofstream ofile(“data.txt”);
if (ofile.is_open()) {
ofile << “Hello, File!” << std::endl;
ofile.close();
}
“`

读文件
“`cpp

include

include

std::ifstream ifile(“data.txt”);
std::string line;
if (ifile.is_open()) {
while (std::getline(ifile, line)) {
// 处理每一行
}
ifile.close();
}
“`


结语

本速查指南涵盖了 C++ 日常开发中最常用到的核心部分。C++ 是一门不断发展的语言,掌握其核心并持续学习 C++11/14/17/20/23 等新标准中的优秀特性,将使您的开发工作如虎添翼。建议将 cppreference.com 作为更详细、更深入研究的权威参考。

滚动至顶部