22.6 — std::shared_ptr

与旨在单独拥有和管理资源的 std::unique_ptr 不同,std::shared_ptr 旨在解决需要多个智能指针共同拥有资源的情况。这意味着多个 std::shared_ptr 指向同一资源是没问题的。在内部,std::shared_ptr 会跟踪有多少个…

22.5 — std::unique_ptr

在本章开头,我们讨论了在某些情况下使用指针可能导致错误和内存泄漏。例如,当函数提前返回或抛出异常且指针未正确删除时,就可能发生这种情况。#include <iostream> void someFunction() { auto* …

22.4 — std::move

一旦你开始更频繁地使用移动语义,你就会发现一些情况,你希望调用移动语义,但你必须使用的对象是左值,而不是右值。以下面的 swap 函数为例:#include <iostream> #include <string> template <typename T> void mySwapCopy(T& a, …

22.2 — 右值引用

在第 12 章中,我们介绍了值类别 () 的概念,它是表达式的一个属性,有助于确定表达式是否解析为值、函数或对象。我们还介绍了左值和右值,以便我们可以讨论左值引用。如果你对左值和右值感到模糊,…