本文介绍: C++中有两种重要的智能指针分别是:std::unique_ptr和std::shared_ptr。我们以std::unique_ptr为例简单的介绍一下,unique_ptr类似于普通指针,只属于它指向的对象。unique_ptr 将对象 taskPtr 接受原始指针作为参数。现在当main函数退出时,该对象超出作用范围就会调用其析构函数,在unique_ptr 对象 taskPtr 的析构函数中,会删除关联的原始指针,这样就不用专门 delete Task 对象了。创建unique_ptr对象。
C++ 指针具有和 C 指针的功能,但是随着 C++ 的发展, C++ 引入了更多新特性
指针常量
在C++11之前都会使用NULL表示空指针,有时使用NULL定义为常量0会导致程序在运行时出现意外的结果。分析下面的重载函数
编译无法通过:
正是因为NULL等价于常量0,又同时作为空指针。编译器不清楚该执行哪一个函数。为了解决这个问题,自从C++11之后引入了真正的空指针nullptr。将该指针替换NULL,程序就可以正常运行了。
智能指针
C++中有两种重要的智能指针分别是:std::unique_ptr和std::shared_ptr。我们以std::unique_ptr为例简单的介绍一下,unique_ptr类似于普通指针,只属于它指向的对象。C++给程序员编程提供了强大灵活性(尤其是指针操作),程序员需要提醒自己注意内存的释放,稍不注意就容易造成内存泄漏。unique_ptr 会自动释放资源,不用让程序员担心内存泄漏的问题。创建 unique_ptr,应当使用 std::make_unique<>()
unique_ptr 将对象 taskPtr 接受原始指针作为参数。现在当main函数退出时,该对象超出作用范围就会调用其析构函数,在unique_ptr 对象 taskPtr 的析构函数中,会删除关联的原始指针,这样就不用专门 delete Task 对象了。这样不管函数正常退出还是异常退出(由于某些异常),也会始终调用taskPtr的析构函数。有效的避免内存泄漏。
参考
引用csdn例程
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。