智能指针
发布日期:2022-02-10 13:35:53 浏览次数:20 分类:技术文章

本文共 705 字,大约阅读时间需要 2 分钟。

一、什么是智能指针?

一句话解释:

  智能指针就是类模板。智能指针就是封装好的能够自动释放内存的对象。是不是感觉和Java的自动内存回收机制有点类似?!其实使用过MFC连接数据库的基本都是使用过类似的智能指针。例如:CxxxPtr类。

二、智能指针的详解

  网上有许多关于这方面的内容。详细可以看这几个链接:

 

  

三、要点总结

1.智能指针和一般指针初始化的区别。

void UseRawPointer(){    //一般指针的初始化    Song* pSong = new Song(L"Nothing on You",L"Bruno Mars");    //不要忘了!    delete pSong;}void UseSmartPointer(){    //在栈上通过一般指针对象,参数传递初始化    unique_ptr
song2(new Song(L"Nothing on You",L"Bruno Mars"));} //退出函数时自动删除,不用delete
2.std::auto_ptr(即标准库的智能指针)

(1)尽量不要使用“operator=”。如果使用了,右边的值(即先前的对象)不能再被使用,否则会出错。

(2)成员函数release()只是归还对象的所有权,不会释放对象,使用reset()成员函数就可以了。

(3)最好不要当成参数传递。

(4)最好在代码的独立行上创建智能指针,不要再参数列表中创建,否则会由于某些参数分配规则而发生轻微的

资源泄露情况。

 (5)由于标准库的智能指针有诸多的限制,所以可以使用boost的智能指针或者Loki的智能指针。

转载地址:https://blog.csdn.net/zoopang/article/details/24873695 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C/C++中的预定义宏
下一篇:基础练习 FJ的字符串

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月03日 12时19分15秒