C++unique_ptr小结

news/2024/11/8 0:41:10/

文章目录

  • 返回unique_ptr
  • 指定删除器
  • 尺寸问题

返回unique_ptr

unique_ptr<string> test()
{return unique_ptr<string>(new string("hello world"));// 我们知道在unique_ptr不能进行赋值, 或者使用其他的指针初始化, // 在这里创建了临时的对象, 所以会调用移动构造函数,可以实现赋值
}unique_ptr<string> pstr = test();
cout << *pstr << endl;

指定删除器

指定删除器的格式

// unique_ptr<指定的对象类型, 删除器> 智能指针变量名
void mydelete(string* str)
{delete str;str = nullptr;cout << "delete ok" << endl;
}
	typedef void(*pf)(string*); // 定义一个函数指针类型, 类型名字叫fp// or using pf = void(*)(string*);// typedef decltype(mydelete)* pf;unique_ptr<string, pf> pstr_1(new string("C++ hello"), mydelete);
	auto mydella = [](string* pstr){delete pstr;pstr = nullptr;cout << "delete ok" << endl;};unique_ptr < string, decltype(mydella)> pstr_1(new string("C++ hello"), mydella);

尺寸问题

通常情况下, unique_ptr的大小和裸指针的大小一样, 但是当指定了删除器之后, unique_ptr的指针的大小会随之而改变,

	auto mydella = [](string* pstr){delete pstr;pstr = nullptr;cout << "delete ok" << endl;};unique_ptr < string, decltype(mydella)> pstr_1(new string("C++ hello"), mydella);cout << sizeof(pstr_1) << endl; // 8字节

所以对于unique_ptr来说, 指定了删除器可能会导致效率下降


http://www.ppmy.cn/news/1027852.html

相关文章

Titanic--细节记录二

merge、join以及concat的方法的不同以及相同 相同之处&#xff1a;都用于合并数据。 不同之处&#xff1a; merge主要是基于列的合并。join主要是基于索引&#xff08;行标签&#xff09;的合并。concat可以沿任意轴合并&#xff0c;更灵活。 import pandas as pddf1 pd.Da…

【ARM Cache 系列文章 9 -- ARM big.LITTLE技术】

文章目录 big.LITTLE 技术背景big.LITTLE 技术详解big.LITTLE 硬件要求 big.LITTLE 软件模型CPU MigrationGlobal Task SchedulingGlobal Task Scheduling比CPU Migration的优势 转自&#xff1a;https://zhuanlan.zhihu.com/p/630981648 如有侵权&#xff0c;请联系删除 big.L…

Expo项目 使用Native base UI库

装包&#xff1a; yarn add native-base expo install react-native-svg12.1.1 Index.js: import React from react import { View, Text } from react-native import useList from ./useList import { NativeBaseProvider, Button, Box } from native-base import styles f…

【好好练习ACM-DAY1】

网站主要参照洛谷 牛客 力扣 cf等 题单列表 - 洛谷 题单链接 今天的刷题内容如上 在进入专题学习之前 先看补充知识 数组能开多大 C/C数组的大小最大能有多大&#xff1f;_c数组大小_JoannaJuanCV的博客-CSDN博客 全局&#xff1a;int 2000*2000 6个0可 局部&#xf…

阿里云服务器安装WordPress网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器安装WordPress博客网站教程&#xff0c;WordPress是使用PHP语言开发的博客平台&#xff0c;在支持PHP和MySQL数据库的服务器上&#xff0c;您可以用WordPress架设自己的网站&#xff0c;也可以用作内容管理系统&#xff08;CMS&#xff09;。本教…

Vue.js2+Cesium1.103.0 九、淹没分析效果

Vue.js2Cesium1.103.0 九、淹没分析效果 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><spanid"button"style"position: absolute; right: 50px; top: 50px; z-index: 999; font-size: 24px…

计算机组成原理-笔记-汇总

&#x1f4da; 前言 本人在备考408&#xff0c;王道讲得的确不错&#xff0c;本人之前也看过哈工大【刘宏伟老师】的课&#xff0c;两者对比下来。 王道——更加基础&#xff0c;对小白更加友好哈工大——偏实践偏硬件&#xff08;会将更多的代码硬件设计&#xff09; PS&#…

docker配置文件

/etc/docker/daemon.json 文件作用 /etc/docker/daemon.json 文件是 Docker 配置文件&#xff0c;用于配置 Docker 守护进程的行为和参数。Docker 守护进程是负责管理和运行 Docker 容器的后台进程&#xff0c;通过修改 daemon.json 文件&#xff0c;可以对 Docker 守护进程进…