现代 C++ 分享(1)—— 生命周期、所有权和资源管理

这是整个现代 C++ 分享系列第一篇,关于生命周期、所有权和资源管理。主题包括但不限于指针、智能指针、引用、类型系统、移动语义以及完美转发和引用折叠相关的主题。

C++ 在演进过程中逐渐增强和扩展了对类型处理的能力:

  1. C++11 中引入右值引用,通过重新定义值类别对表达式进行分类,右值引用能表达移动语义,解决了 C++11 之前产生的中间临时对象需要多次拷贝的问题;
  2. C++11 中引入 auto 关键字,对初始化变量进行推导,并且引入 decltype 关键字,通过已有对象、变量获得类型;
  3. C++17 引入 optional 类型表达对象是否存在,并且引入 variant 作为类型安全的 union,类型表达更灵活。
  4. C++20 中引入 concept 特性对类型在编译期做约束,增强类型的表达和检查能力。

在 C++ 中,容器和指针抽象后想要被正确且高效的使用,在工程中通常需要封装一组数据及函数来访问和操作。举例来说,指针是通用和有效抽象的机器地址,但正确使用指针来表示资源的所有权是非常困难的,因此标准库提供了智能指针类管理资源和生命周期。指针的更泛化的概念是,任何允许我们引用对象并根据其类型访问。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×