楼层: 首页/ 软件技术/ 现代 C++/ C++ 基础增强:让代码又短又安全
2

C++ 基础增强:让代码又短又安全

References · const · auto · nullptr

C++ 在 C 的地基上加了一堆"语法糖和安全垫"。这一章全是现代 C++ 的高频小特性,每一个都短,但组合起来能让代码清爽一大截。

引用 &:变量的别名

引用(reference)就是给变量起个外号,外号和本尊是同一个人,不是指针(不需要解引用,也不能为空)。函数想用"传地址"的效果,用引用比指针干净。

引用 vs 指针:交换两个数

// 用引用:不用写 & 和 *,干净利落 void swap(int& a, int& b) { // a、b 是外面变量的别名 int t = a; a = b; b = t; } int x = 1, y = 2; swap(x, y); // 直接传变量,不用取地址,外面真的换了

const:承诺"我不改它"

写法含义
const int x = 5;x 是常量,不能改。
const int& r = x;通过 r 只读,不能改 x。传大对象进函数时最爱用,避免拷贝又不改它。
void f() const;const 成员函数:承诺这个成员函数不会修改对象。

现代小特性合集

auto / constexpr / nullptr / 范围 for / 结构化绑定 / 统一初始化

#include <vector> #include <utility> constexpr int N = 5; // 编译期常量,比 #define 安全(有类型) int main() { auto a = 3.14; // auto:让编译器自己推类型,a 推成 double int* p = nullptr; // nullptr:类型安全的空指针,比 NULL 好(NULL 其实是个 0) std::vector<int> v = {1, 2, 3}; // 花括号统一初始化 for (auto& x : v) { // 范围 for:直接遍历,不用下标 x *= 2; } // 结构化绑定(C++17):一次解包一个 pair/tuple auto [first, second] = std::pair<int, double>{1, 2.5}; }

记auto 用还是不用

auto 不是"偷懒随便用"。它在类型名又长又臭时(迭代器、lambda、模板)能救命;但在关键业务数字上写出来会让人看不清类型。原则:类型一眼能看明白就写出来,类型写出来很长就用 auto。