推荐B站文章:
6.shared_ptr与unique_ptr_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p=6&vd_source=a934d7fc6f47698a29dac90a922ba5a3我的往期文章:
独占指针:unique_ptr 与 函数调用-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135841140?spm=1001.2014.3001.5501计数指针:shared_ptr (共享指针)与函数-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135851596?spm=1001.2014.3001.5501
(1)shared_ptr 与 unique_ptr
- 不能将shared_ptr 转换为unique_ptr
-
unique_ptr可以转换为shared_ptr
- 通过std::move
(2)常见的设计
- 将你的函数返回unique_ptr是一种常见的设计模式,这样可以提高代码的复用度,你可以随时改变为shared_ptr
- 因为返回unique_ptr类型的可以直接赋值给shared_ptr 类型的
#include
#include
#include "cat.h"
using namespace std;
std::unique_ptr get_unique_ptr() {
std::unique_ptr cat_p = std::make_unique("lanmao");
return cat_p;
}
int main(int argc,char* argv[]) {
std::unique_服务器托管网ptr c_p_1 = std::make_unique("TomCat");
std::shared_ptr c_p_2 = std::move(c_p_1);// 将unique_ptr转换成shared_ptr
cout c_p_3 = get_unique_ptr();
if(c_p_3) {
c_p_3->catInfo();
cout
执行结果:
PS D:WorkC++UserLessoncppenvbinDebug> ."D:/Work/C++UserLesson/cppenv/bin/Debug/app.exe"
Constructor of Cat : TomCat
c_p_2 use count : 1
Constructor of Cat : lanmao
cat info name : lanmao
c_p_3 use服务器托管网 count : 1
over~
Destructor of Cat
Destructor of Cat
PS D:WorkC++UserLessoncppenvbinDebug>
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 浅谈WPF之控件模板Control Template和数据模板Data Template
WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板,将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类:数据模板【Data Template】和控件模板【Co…