C++ 智能指针:原理、应用与优势
1. 指针使用的挑战与智能指针的引入
在 C++ 编程中,指针的使用存在固有的危险。例如,存储所有工件对象的映射必须在程序中所有对工件指针的使用之后才失效。随着程序规模和复杂度的增加,指针使用的管理变得愈发困难,这可能会掩盖指针的实际使用方式。为了确保无论程序如何演变,所有指针都能安全使用,我们需要引入智能指针。
2. 指针与迭代器
- 相似性 :迭代器语法和指针语法有相似之处,C++ 委员会有意设计迭代器来模仿指针。实际上,指针满足连续迭代器的所有要求,因此可以对 C 风格数组使用所有标准算法,示例代码如下:
int data[4];
std::ranges::fill(data, 42);
- 迭代器的特性 :迭代器是一种智能指针,有六种不同类型。连续迭代器类似于指针,其他类型的迭代器功能较少,它们以“简单”的方式实现智能。然而,迭代器和指针一样危险,在其原始形式下,几乎和指针一样缺乏检查、不受控制且原始。例如,迭代器不会阻止你过度推进、解引用未初始化的迭代器或比较指向不同容器的迭代器等。
- 安全性与性能权衡 :由于这些错误会导致未定义行为,库实现者可以为每种错误选择任何结果。为了提高性能,大多数库不实现额外的安全检查,将责任推给程序员,由程序员决定安全与性能的权衡。如果程序员更注重安全而非性能,一些库实现提供了调试版本,该版本实现了许多安全检查,如检查迭代
超级会员免费看
订阅专栏 解锁全文
507

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



