您好,登录后才能下订单哦!
本篇内容介绍了“C++11中的智能指针怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
函数原型:
shared_ptr& operator= (const shared_ptr& x) noexcept;
说明:
从已有指针赋值给shared_ptr,共享数据管理权。
代码实例:
执行结果:
从输出结果可以看到ps和ps1计数,指针的取值。
注意事项:
ps1的声明和赋值是分两次进行的,只有这样才会执行赋值操作。下面的代码看起来虽然是赋值,但实际执行的是初始化操作(构造函数)。
移动赋值
函数原型:
shared_ptr& operator= (shared_ptr&& x) noexcept;
说明:
从已有指针赋值给shared_ptr,伴随数据管理权的转移。移动赋值和拷贝赋值的区别在于参数是否为右值引用。
代码实例:
执行结果:
从输出结果可以看到ps和ps1计数,指针的取值。
注意事项:
虽然拷贝赋值也不会导致内存泄漏,但是某些场景下,移动赋值可以更加准确的反映编程者的意图,可能更早的释放内存。
下面的代码执行的也是移动赋值。
“C++11中的智能指针怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。