C++ 中的对象所有权与视图:现代编程的新范式
1. 资源所有权对象概述
在 C++ 编程中,对象所有权是管理资源的核心概念。从 C++ 诞生之初,其就不仅局限于使用指针来拥有资源,任何对象都可以拥有资源。表达独占所有权最简单的方式是在栈上创建局部变量。当然,这些对象也可以由指针(唯一指针或共享指针)拥有。当需要非所有权访问时,通常通过原始指针或引用来访问这些对象。
常见的资源所有权对象包括 std::string 和 std::vector 。 std::string 是一个拥有字符串的对象,从内存所有权角度看,它本质上是一个拥有 char* 的指针,并且还有许多用于操作字符串的成员函数。 std::vector 则是一个拥有任意类型对象数组的对象。
创建这些对象的常见方式有两种:一是作为局部变量,二是作为类的数据成员。例如:
class C {
std::string s_;
};
std::vector<int> v = ... ; // v 拥有 int 数组
C c; // c 拥有字符串 s
这里我们将关注点从拥有指针转移到拥有对象。这些对象本质上是专门的拥有(唯一)指针,但与普通指针不同的是,它们还包含额外信息,如 std::string 包含字符串长度, std::vector 包含数组大小。
超级会员免费看
订阅专栏 解锁全文
37

被折叠的 条评论
为什么被折叠?



