既然智能指针已经存在,那么使用C型指针是不是已经过时了
Now that smart pointers exist, is it deprecated style to use C type pointers?
可能重复:
何时使用哪种指针?
有很多专业人士支持C++11的智能指针:它们更安全,功能更强大,范围更明显等等。
"经典"类C指针是吗
class C{};
C c;
C* c_p = &c;
现在过时了?它们甚至被弃用了吗?或者是否存在C指针仍然有意义的用例?
编辑:带有智能指针的代码片段:
class C{};
C c;
std::shared_ptr<C> c_p(new C());
编辑:感谢您指出重复内容。Xeo的回答是:
使用哑指针(原始指针)或对资源的非拥有引用的引用,当>时,您知道资源将比引用对象/范围更长寿。当您需要可为null或可重置性时,首选引用和>使用原始指针。
如果只有这些,我承认这个问题已经结束了。
在一些用例中,原始指针是有意义的。
现代代码中的原始指针是"非拥有"指针。这意味着代码不应该做任何需要或获取指向对象所有权的事情。例如,它不应该是delete
d,用于构造拥有的智能指针,或者保存在当前上下文之外。
绝对不是。智能指针用于特殊情况,而不是一般用途。根据应用程序和编程风格指针仍然是原始指针;事实上,在某些情况下根本不是聪明的指针。
delete
它,这在存在异常的情况下可能很难做到。
原始指针比智能指针更有效率,因此在代码的某些性能敏感部分使用它们是有意义的。在一些领域,如线性代数,指针算术可能很有用,你可以在那里使用原始指针[1],或者在原始指针之上构建新的抽象,可能与智能指针相结合,而不是只使用智能指针。
[1] 例如用于定义子矩阵的视图
相关文章:
- 为什么编译器将其解析为函数指针而不是递归调用?
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- 为什么单例使用指针而不是引用?
- 为什么我可以通过原始指针而不是shared_ptr来修改对象
- 为什么设置/get_default_resource使用指针而不是引用?
- 为什么只有指向函数的指针而不是函数的变量?
- 当 ParamType 既不是指针也不是引用时自动类型推断
- 为什么``polymorphic_allocator`取一个emore _ resource`指针''而不是参考
- 为什么我们使用指针而不是简单地创建特定尺寸的数组
- 为什么它是一个常量指针而不是指向常量指针
- 返回一个原始指针而不是unique_ptr是一种良好的编码实践吗
- 为什么 clang 将字符串文字作为指针而不是数组
- 将指针而不是迭代器传递到std ::复制
- C++为什么atomic_load参数的类型是指针而不是引用?
- 如果我需要多态性,我应该使用原始指针而不是unique_ptr
- G++ 将返回的字符串文本视为常量字符指针而不是常量字符数组
- 在DLL中分配内存并将其指针提供给客户端应用程序,这是不是一种糟糕的做法
- 模板类c中的析构函数:如何删除可能是指针或不是指针的字段?
- 使用指针而不是引用时访问指向结构的指针数组时出现段错误
- 为什么链表使用指针而不是将节点存储在节点内部