• 裸指针七宗罪——为什么现代 C++ 不建议使用裸指针


    总结自《Effective Modern C++》第 4 章

    裸指针七宗罪

    1. 裸指针无法说明指向的是单个对象还是一个数组
    2. 裸指针无法说明使用完指针是否需要析构,即从声明中看不出来指针是否拥有所指向的对象
    3. 即使知道需要析构,也不知道应该用 delete 还是调用某个类似 deinit(p) 的函数
    4. 即使知道用 delete,也不知道用 delete 还是 delete[](见理由 1)
    5. 即使知道如何析构,还要保证在整个路径上,刚好只调用一次析构:少调用导致资源泄露,调用多次将产生未定义行为(如同一指针 delete 两次可能导致程序崩溃)
    6. 空悬指针(dangling pointer):对象已析构,但仍有指针指向它
    7. (我自己硬凑的)使用不便:取地址、解引用、通过 -> 来访问成员,比 . 多按两个键,手指移动距离远,容易按错...

    解决方案

    • (我自己瞎说的)能不用就不用,能用对象用对象,不要什么都无脑 new 堆上
    • 智能指针:unique_ptr(默认首选), shared_ptr(除非明确需要共享所有权), weak_ptr

    扩展阅读

  • 相关阅读:
    每日一道面试题-02
    JAVA获取对象的四种方式
    每日一道面试题-01
    MD5算法原理浅谈
    JAVA--时间格式转换
    数据库-union和union all
    Struts1和Struts2的区别
    Java定时器Timer
    webView调试
    webView和js交互规范
  • 原文地址:https://www.cnblogs.com/tengzijian/p/16209803.html
Copyright © 2020-2023  润新知