【发布时间】:2021-02-23 06:33:17
【问题描述】:
我正在阅读 C++ 中的智能指针,令我惊讶的是,超过 99% 的给定示例实际上是相当糟糕的示例,因为在这些情况下可以避免动态分配。我同意仅在 STL 容器不起作用的情况下使用智能指针。例如,在动态数组 (std::vector) 中,性能很重要,因此最好使用经过良好测试的代码而不使用任何智能指针。
这是我认为不好的例子,因为在这种情况下unique_ptr 不是解决方案,但堆栈分配是正确的方法。
MyObject* ptr = new MyObject();
ptr->DoSomething();
delete ptr;
那么 C++ 中的智能指针有哪些好的示例或用途?
换句话说,将指针的所有权转移到另一个对象需要什么设计模式?
【问题讨论】:
-
这个问题听起来像是在咆哮,我真的不明白你在问什么
-
"如果对象从向量中移除,那么它将被删除" 否。我建议你在抱怨高级之前先学习基础......
-
动态内存分配是开销。在这种情况下使用智能指针不会增加开销。无意冒犯,但您似乎有一些误解
-
如果您不使用智能指针,您需要一些其他方法来跟踪对象的生命周期。这是有代价的,而且容易出错。智能指针已被证明是解决常见问题的好方法
-
unique_ptr没有超过new的开销,并且是默认的智能指针
标签: c++ pointers smart-pointers