现代 C++ 新特性速览

1 min read [C/C++零基础到大神] post #cpp#modern-cpp

现代 C++ 的目标不是写得更花,而是减少样板代码和错误面。

auto

auto it = map.find(key);

当类型很长且右侧已经表达清楚时,auto 很有用。

lambda

std::sort(v.begin(), v.end(), [](auto a, auto b) {
    return a.score > b.score;
});

lambda 适合局部、小范围的函数对象。

结构化绑定

auto [it, inserted] = map.insert({key, value});

constexpr

constexpr 表示可以在编译期求值,适合常量计算和元编程基础。

新特性不是越多越好

现代 C++ 的语法很多,初学时容易产生一种冲动:能用新特性就用新特性。但工程代码更看重可读性。比如 auto 很有用,但如果右侧表达式不能清楚说明类型,显式写出类型反而更好。

auto result = get();

这行代码如果脱离上下文,很难知道 result 是数字、字符串还是对象。相比之下:

std::optional<User> result = find_user(id);

读者能直接理解函数意图。

我的使用顺序

我会优先掌握这些特性:范围 for、auto、智能指针、lambda、constexpr、结构化绑定。它们出现频率高,收益也明显。至于模板元编程、概念、协程,可以等基础扎实后再系统学习。

小结

现代 C++ 的核心不是炫技,而是把资源管理、类型推导和局部抽象做得更稳。

评论

...

正在读取评论。