【发布时间】:2013-10-17 03:08:56
【问题描述】:
短版:
在现代 C++ 中使用非智能指针有什么可接受的理由吗?
加长版:
我们有一个包含大量旧 C++ 代码的巨大产品,现在我们正试图将其重构为现代 C++ 时代。除了所有老式代码之外,还有大量指针传递(主要是使用 SAL 注释来提供某种安全感),我想知道我们是否应该将它们全部更改为智能指针,或者保留其中一些?
在尝试转换其中一些代码时,我最终得到了一个可以简单地证明使用智能指针的代码。
所以问题是:是否存在过度使用智能指针这样的事情?
或者换句话说:这些天对于非智能指针是否有任何可接受的场景?
【问题讨论】:
-
如果他们不拥有任何东西,那就没有多大意义了。
-
问题是它们可能根本不应该是指针(如你所说,原始指针在现代 c++ 中没有太多位置),但如果它没有坏,不要不要修复它
-
如果原始指针不拥有任何资源,则它们在现代 c++ 中很好。这意味着您不必将所有原始指针都更改为智能指针。
标签: c++ pointers c++11 refactoring