C++ 常用语法速查表
把 C++ 日常开发最常用的语法整理成速查,写系统代码时对照查。
返回 编程语言类与对象 8
class MyClass { public: MyClass(); ~MyClass(); };类定义
struct MyStruct { int x; int y; };结构体(默认 public)
MyClass obj;栈上对象
MyClass *obj = new MyClass();堆上对象
delete obj;释放对象
class Derived : public Base { };继承
virtual void func() override;虚函数重写
class Abstract { virtual void func() = 0; };纯虚函数(抽象类)
STL 容器 8
std::vector<int> v = {1, 2, 3};动态数组
v.push_back(4); v.size(); v[0];vector 操作
std::list<int> l;双向链表
std::map<std::string, int> m;有序映射(红黑树)
std::unordered_map<std::string, int> m;无序映射(哈希表)
std::set<int> s;有序集合
std::stack<int> st; std::queue<int> q;栈与队列
std::pair<int, std::string> p = {1, "one"};键值对
智能指针 5
std::unique_ptr<int> p = std::make_unique<int>(10);独占指针
std::shared_ptr<int> p = std::make_shared<int>(10);共享指针(引用计数)
std::weak_ptr<int> wp = sp;弱引用(不增加计数)
if (auto locked = wp.lock()) { }弱引用转强引用
std::unique_ptr<int> p2 = std::move(p);转移所有权
Lambda 表达式 6
auto fn = []() { return 42; };无捕获 Lambda
int x = 10; auto fn = [x]() { return x; };值捕获
auto fn = [&x]() { x++; };引用捕获
auto fn = [=]() { return x; };值捕获所有
auto fn = [&]() { x++; };引用捕获所有
auto fn = [](int a, int b) { return a + b; };带参数 Lambda
模板 4
template <typename T> T add(T a, T b) { return a + b; }函数模板
template <typename T> class Stack { };类模板
template <> void func<int>(int x) { }模板特化
std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; });自定义排序
异常处理 5
try { } catch (const std::exception &e) { }异常捕获
throw std::runtime_error("error");抛出异常
catch (...) { }捕获所有异常
noexcept声明不抛异常
std::terminate();终止程序
现代 C++ 特性 8
auto x = 42;类型推导
decltype(x) y = 10;类型声明
constexpr int MAX = 100;编译期常量
std::optional<int> opt = 42;可选值
std::variant<int, std::string> v = 42;变体类型
std::any a = 42;任意类型
for (auto &[key, value] : map) { }结构化绑定(C++17)
std::string_view sv = "hello";字符串视图(C++17)
💡 提示
- 优先使用智能指针,避免手动 new/delete。
- STL 容器选择:频繁随机访问用 vector,频繁插入删除用 list,键值查找用 unordered_map。
- Lambda 表达式适合短小的回调函数,复杂逻辑建议用普通函数或函数对象。