0

我说的是一般应用程序,而不是低级应用程序,它们与硬件接口。

查看遗留代码有很多:

delete myObject;

为什么智能指针的概念没有在更早的时候引入,它只是利用了 RAII,一个基于堆栈的对象在离开范围时销毁的概念。从第一天起就一直存在。

可能是性能,一个额外的方向(但这是很小的代价/开销)。

开发人员可以在 30 分钟内创建一个基本但功能强大的自定义智能指针。那为什么这么久?

或者它在那里,但人们选择不使用它......

4

2 回答 2

6

我不知道答案,但随着 C++ 从 C 演变而来,C 中的很多代码都使用 malloc/free,因为没有其他方法可以做到这一点,因此它作为新/删除转移到 C++。我确信 C++ 中的智能指针实现是在创建语言之后发生的,毕竟它需要 C++ 早期版本中不存在的模板。

于 2012-08-31T10:35:14.327 回答
2

在设计良好的项目中,对象生命周期设计良好,自动化此类任务几乎没有什么好处。

随着来自自动化环境的程序员开始成为 C++ 中的大多数,它成为一种必需品。

然而,由于不正确使用智能指针而引入的错误仍然比简单地缺少删除更难跟踪。

于 2012-08-31T10:36:12.367 回答