当前位置: 首页 > news >正文

【C++11】类的新功能

前言

              上文我们学习了包装器:function和bind。function可以包装一切可调用对象,并用统一的调用方式调用不同的可调用对象。bind则可以控制函数参数个数【C++11】包装器:function与bind-CSDN博客

        本文我们来学习C++11的类中新增的一些功能

默认的移动构造和移动赋值

        在原来的C++类里面有六个默认成员函数(既不写会编译器也会自动生成):构造函数\析构函数\拷贝构造函数\赋值重载\取地址重载\const 取地址重载。前四个是我们重点学习的,后两个不用管直接用编译器默认生成的即可。

        在C++11中新增了两个默认成员函数:移动构造和移动赋值

        如果我们没有实现移动构造,并且没有实现析构函数、拷贝构造函数、赋值重载,编译器才会生成默认移动构造函数。默认的移动构造函数,对内置类型会按字节拷贝数据或移动资源(分情况:对于基本类型则是按字节拷贝,对于类类型有资源申请的则是移动资源),对自定义类型,则是看有没有实现移动构造,如果实现了就调用移动构造,没有实现就调用拷贝构造。

         如果我们没有实现移动赋值,并且没有实现析构函数、拷贝构造函数、赋值重载,编译器才会生成默认移动赋值函数。默认的移动赋值函数,对内置类型会按字节拷贝数据或移动资源(分情况:对于基本类型则是按字节拷贝,对于类类型有资源申请的则是移动资源),对自定义类型,则是看有没有实现移动赋值,如果实现了就调用移动赋值,没有实现就调用拷贝构造。(和上述移动构造基本一样)

        如果我们实现了移动构造和移动赋值,相应的编译器就不会生成移动构造和移动赋值

defult和delete

        C++11中,为了让我们更好的控制默认成员函数,提供defult关键字。其作用是当我们想使用某个默认成员函数时,因为某种原因没有生成相应的默认成员函数,我们可以使用defult关键字使其强制生成。例如:我们实现了构造函数,但是想使用默认移动构造,就可以使用defult强制生成。

        如果我们想限制一些默认成员函数的生成,使用delete关键字即可

class Person
{
public:Person(const char* name = "", int age = 0):_name(name), _age(age){}Person(const Person& p):_name(p._name), _age(p._age){}//强制生成移动构造Person(Person&& p) = default;//强制不生成拷贝构造//Person(const Person& p) = delete;
private:string _name;int _age;
};

STL中一些变化

        C++11中更新了不少东西:

        最重要的新容器:unordered_map和unordered_set。

        最重要的新接口:右值引用和移动语义相关的push/insert/emplace系列和移动构造和移动赋值,还有initializer_list版本的构造。

相关文章:

【C++11】类的新功能

前言 上文我们学习了包装器:function和bind。function可以包装一切可调用对象,并用统一的调用方式调用不同的可调用对象。bind则可以控制函数参数个数【C11】包装器:function与bind-CSDN博客 本文我们来学习C11的类中新增的一些功能 默认的移…...

1.6 点云数据获取方式——单目相机多视图几何

图1-6-1多视图几何重建 单目相机的多视图几何研究具有重要的理论与实际意义。在理...

马井堂-区块链技术:架构创新、产业变革与治理挑战(马井堂)

区块链技术:架构创新、产业变革与治理挑战 摘要 区块链技术作为分布式账本技术的革命性突破,正在重构数字时代的信任机制。本文系统梳理区块链技术的核心技术架构,分析其在金融、供应链、政务等领域的实践应用,探讨共识算法优化、…...

MicroBlaze软核的开发使用

一、MicroBlaze 介绍 MicroBlaze 是由 Xilinx 开发的一种可配置的 32 位 RISC 软处理器内核。它作为 FPGA 设计中的 IP 核,通过 Vivado 工具进行配置和集成。MicroBlaze 提供了高度的灵活性,允许开发人员根据应用需求调整处理器的功能、性能和资源占用。…...

是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表

以下是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表。 一、全流程技术栈概览 阶段核心任务关键技术/工具数据采集获取原始数据…...

【爬虫】案例-获取cbh电影

以cupfox.in为例子: 观察ts文件和m3u8文件,可以知道一个完整的视频是由多个ts文件组合,而m3u8则是记录所有ts文件信息的文本 思路 1.先爬一个ts,测试能否观看 2.爬m3u8文件,通过正则分析出变化的部分 3.完整的把每个…...

分治而不割裂—分治协同式敏捷工作模式

分治而不割裂:解密敏捷协同工作模式如何驱动大企业持续领跑 在数字化浪潮中,亚马逊仅用11天完成Prime Day全球技术架构升级,华为5G基站项目组创造过单周迭代47个功能模块的纪录,这些商业奇迹的背后,都隐藏着一个共性秘…...

【MySQL】聚合查询 和 分组查询

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 目录 🌴 一、聚合查询 🌲1.概念 🌲2.聚合查询函数 COUNT() SUM() AVG(&…...

Weka通过10天的内存指标数据计算内存指标动态阈值

​ 在数据处理和监控系统中,动态阈值的计算是一种常见的方法,用以根据数据的实际分布和变化来调整阈值,从而更有效地监控和预警。在Weka中,虽然它主要是用于机器学习和数据挖掘的工具,但你可以通过一些间接的方法来实现…...

iOS签名的包支持推送功能吗?

推送失败的可能原因: 1. 生产包没有上报token ,所以无法推送成功,需要检查是否在企业包签名后导致无法完成apns的注册,无法从Apple取到token 2. 问题可能出在证书上,因为iOS推送有一个开发证书和一个生产证书&#xff…...

JavaWeb:后端web基础(TomcatServletHTTP)

一、今日内容 二、Tomcat 介绍与使用 介绍 基本使用 小结 配置 配置 查找进程 三、Servlet 什么是Servlet 快速入门 需求 步骤 1.新建工程-模块(Maven) 2.修改打包方式-war 3.编写代码 /*** 可以选择继承HttpServlet*/ WebServlet("/hello&q…...

关于浏览器对于HTML实体编码,urlencode,Unicode解析

目录 HTML实体编码 URL编码 Unicode编码 解析层次逻辑 为什么<script></script>不可以编码符号 为什么不能编码JavaScript:协议 为什么RCDATA标签中的都会被解析成文本 为什么HTML编码了<>无法执行 HTML实体编码 通过特殊语法&#xff08;<、>…...

C++智能指针滥用带来的性能与内存问题有哪些

在现代C编程中&#xff0c;智能指针&#xff08;Smart Pointers&#xff09;已经成为开发者工具箱中不可或缺的一部分。它们作为一种对传统裸指针&#xff08;Raw Pointers&#xff09;的替代方案&#xff0c;旨在解决长期困扰C开发者的内存管理难题。C作为一门高性能的系统编程…...

C++算法(17):reverse函数用法详解,头文件<algorithm>与实战示例

在C中&#xff0c;std::reverse 函数用于反转容器或数组中元素的顺序&#xff0c;需包含头文件 <algorithm>。以下是其用法详解&#xff1a; 基本用法 函数原型&#xff1a; template <class BidirIt> void reverse(BidirIt first, BidirIt last); 参数&#xf…...

【滑动窗口】最大连续1的个数|将x减到0的最小操作数

文章目录 1.最大连续1的个数2.将x减到0的最小操作数 1.最大连续1的个数 解法&#xff1a; 1.暴力解法给定一个left指针固定左端点元素&#xff0c;再给定一个right指针从左端点元素开始遍历。 当遇到1时&#xff0c;让一个计数器cnt1&#xff0c;当遇到0时&#xff0c;让统计0…...

MySQL 在 CentOS 7 环境下的安装教程

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C语言的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…...

嵌入式复习第一章

1. 嵌入式系统概念、应用与特点 2. 嵌入式系统的硬件&#xff08; CPU 、外设&#xff09; 3. 主要嵌入式软件系统&#xff08;应用及 OS &#xff09; 4. 嵌入式系统的发展趋势 嵌入式系统定义 “以 应用为中心 &#xff0c;以计算机技术为基础&#xff0c;并且软硬件…...

【C#】.net core6.0无法访问到控制器方法,直接404。由于自己的不仔细,出现个低级错误,这让DeepSeek看出来了,是什么错误呢,来瞧瞧

&#x1f339;欢迎来到《小5讲堂》&#x1f339; &#x1f339;这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。&#x1f339; &#x1f339;温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01;&#…...

Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(三)

基于前两篇内容&#xff0c;继续完善企业官网页面&#xff1a; Tailwind CSS 实战&#xff1a;基于 Kooboo 构建企业官网页面&#xff08;一&#xff09;-CSDN博客 Tailwind CSS 实战&#xff1a;基于 Kooboo 构建企业官网页面&#xff08;二&#xff09;-CSDN博客 3.5 联系方…...

Opencv中图像深度(Depth)和通道数(Channels)区别

在OpenCV中&#xff0c;图像深度&#xff08;Depth&#xff09;和通道数&#xff08;Channels&#xff09;是两个完全不同的概念&#xff0c;需严格区分。以下是详细解析&#xff1a; 图像深度&#xff08;Depth&#xff09; 定义&#xff1a;指图像中每个像素通道的位数&#…...

【网络原理】从零开始深入理解HTTP的报文格式(一)

本篇博客给大家带来的是网络HTTP协议的知识点, 重点介绍HTTP的报文格式. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f68…...

Go语言之路————接口、泛型

Go语言之路————接口 前言接口定义实操&#xff0c;接口的定义和实现接口的继承空接口和Any 泛型类型集 结语 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触Go&#xff0c;到后…...

Go语言中的 `time.Tick` 函数详解

time.Tick 是 Go 标准库中用于创建周期性定时器的简便函数。 函数签名 func Tick(d Duration) <-chan Time核心功能 创建一个周期性的定时器通道当 d < 0 时返回 nil返回一个只读的时间通道&#xff0c;定期发送当前时间 与 NewTicker 的关系 time.Tick 是 time.New…...

打印及判断回文数组、打印N阶数组、蛇形矩阵

打印回文数组 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1方法1&#xff1a; 对角线对称 左上和右下是对称的。 所以先考虑左上打印&#xff0c; m i n ( i 1 , j 1 ) \text min(i1,j1) min(i1,j1)&#xff0c;打印出来&#xff1a; 1 1 1 1 1 2 2 2 1 2 3 3 1 2 …...

【图像融合】基于非负矩阵分解分解 CNMF的高光谱和多光谱数据融合附MATLAB代码

基于CNMF的高光谱与多光谱数据融合技术详解 一、非负矩阵分解&#xff08;NMF&#xff09;与约束非负矩阵分解&#xff08;CNMF&#xff09;的核心原理 NMF的基本概念 非负矩阵分解&#xff08;NMF&#xff09;是一种通过将非负矩阵分解为两个非负矩阵乘积的降维方法。给定非负…...

HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(一、项目介绍及实现效果)

在当今数字化时代&#xff0c;如何让传统文化与现代科技相结合&#xff0c;成为了一个值得思考的问题。诗词作为中国传统文化的重要组成部分&#xff0c;承载着丰富的历史信息和文化内涵。为了让更多人了解和欣赏诗词的魅力&#xff0c;我们决定开发一款基于HarmonyOS NEXT的诗…...

线性代数与数据学习

The Functions of Deep Learning (essay from SIAM News, December 2018) Deep Learning and Neural Nets...

Linux中的计划任务

一次性任务 功能介绍&#xff1a; 如果我们希望在将来的某个时间点去执行某件事件&#xff0c;这个事件执行完后任务就结束&#xff0c;那么我们 就可以使用一性计划任务。而要实现这种功能&#xff0c;我们需要任务 atd 服务。我们先查询一下系 统是否存在这个服务。 查看是…...

【C++】线程池

C 线程池介绍 什么是线程池&#xff1f; 线程池&#xff08;Thread Pool&#xff09; 是一种并发编程模型&#xff0c;用于管理和复用多个线程&#xff0c;避免频繁创建/销毁线程的开销。它通过预创建一组线程&#xff0c;并将任务提交到队列中&#xff0c;由空闲线程自动执行…...

美团社招一面

美团社招一面 做题 1、面试题 <style> .outer{width: 100px;background: red;height: 100px; }.inner {width: 50px;height: 50px;background: green; }</style> <div class"outer"><div class"inner"></div> </div>…...

C++:BST、AVL、红黑树

C:BST、AVL、红黑树 二叉搜索树&#xff08;BST&#xff09;二叉平衡搜索树&#xff08;AVL&#xff09;红黑树&#xff08;RBT&#xff09;三者对比什么情况下使用&#xff1f;C 标准库中的使用总结 二叉搜索树&#xff08;BST&#xff09; 二叉搜索树&#xff08;Binary Sea…...

算法笔记.染色法判断二分图

题目&#xff1a;&#xff08;来自AcWing&#xff09; 给定一个 n 个点 m 条边的无向图&#xff0c;图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数 n 和 m。 接下来 m 行&#xff0c;每行包含两个整数 u 和 v&#xff0c;表示点 u …...

在 IDEA 中写 Spark 程序:从入门到实践

在大数据处理领域&#xff0c;Apache Spark 凭借其出色的性能和丰富的功能受到广泛欢迎。而 IntelliJ IDEA 作为一款功能强大的 Java 集成开发环境&#xff0c;为编写 Spark 程序提供了极大的便利。本文将详细介绍如何在 IDEA 中搭建 Spark 开发环境并编写运行 Spark 程序&…...

[Spring] Sentinel详解

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

让数据优雅落地:用 serde::Deserialize 玩转结构体实体

前言 想象一下,服务器突然飞来一堆 JSON 数据,就像一群无头苍蝇冲进办公室,嗡嗡作响,横冲直撞。此刻,你的任务,就是把这群“迷路数据”安置进正确的格子里,分门别类,秩序井然,不混不乱,不漏一只。 好在 Rust 早就为我们备好瑞士军刀:serde::Deserialize。它不仅刀…...

【wpf】 WPF中实现动态加载图片浏览器(边滚动边加载)

WPF中实现动态加载图片浏览器&#xff08;边滚动边加载&#xff09; 在做图片浏览器程序时&#xff0c;遇到图片数量巨大的情况&#xff08;如几百张、上千张&#xff09;&#xff0c;一次性加载所有图片会导致界面卡顿甚至程序崩溃。 本文介绍一种 WPF Prism 实现动态分页加…...

Flow原理

fun main() {runBlocking {launch {flow4.collect{println("---collect-4")}println("---flow4")}}val flow4 flow<Boolean>{delay(5000)emit(false) } 我们分析下整个流程 1.flow为什么之后在collect之后才会发送数据 2.collect的调用流程 我…...

业绩回暖、股价承压,三只松鼠赴港上市能否重构价值锚点?

在营收重返百亿俱乐部后&#xff0c;三只松鼠再度向资本市场发起冲击。 4月25日&#xff0c;这家坚果零食巨头正式向港交所递交上市申请书&#xff0c;若成功登陆港股&#xff0c;将成为国内首个实现“AH”双上市的零食品牌。 其赴港背后的支撑力&#xff0c;显然来自近期披露…...

基于大模型的胆总管结石全流程预测与临床应用研究报告

目录 一、引言 1.1 研究背景 1.2 研究目的与意义 1.3 研究方法和创新点 二、大模型在胆总管结石预测中的应用原理 2.1 大模型概述 2.2 模型构建的数据来源与处理 2.3 模型训练与优化 三、术前预测与准备 3.1 术前胆总管结石存在的预测 3.2 基于预测结果的术前检查方…...

QT—布局管理器之BoxLayout篇

1.布局管理器的概述 在Qt中&#xff0c;使用布局管理器的主要原因是它能够自动管理组件的大小和位置&#xff0c;从而实现灵活且动态的界面布局。布局管理器可以自动调整组件以适应窗口大小的变化&#xff0c;确保界面在不同分辨率和设备上都能保持良好的显示效果。这不仅减少了…...

如何在 IntelliJ IDEA 中编写 Speak 程序

在当今数字化时代&#xff0c;语音交互技术越来越受到开发者的关注。如果你想在 IntelliJ IDEA&#xff08;一个强大的集成开发环境&#xff09;中编写一个语音交互&#xff08;Speak&#xff09;程序&#xff0c;那么本文将为你提供详细的步骤和指南。 一、环境准备 在开始编…...

湖北理元理律师事务所:债务优化的法律机制与民生实践

在债务纠纷日益增多的社会背景下&#xff0c;合法、规范的债务管理服务成为民生需求的重要环节。湖北理元理律师事务所作为经国家司法局注册登记的债事服务机构&#xff0c;以法律为工具&#xff0c;探索出一套覆盖债务咨询、规划与风险防控的服务体系。 1.法律服务的专业化框…...

练习普通话,说话更有节奏

玲珑塔&#xff0c;塔玲珑&#xff0c;玲珑宝塔第一层&#xff0c;一张高桌四条腿&#xff0c; 一个和尚一本经。一个铙钹一口磬&#xff0c;一个木鱼一盏灯。 一个金玲&#xff0c;整四两&#xff0c;风儿一刮响哗愣。 玲珑塔&#xff0c;隔过两层数三层&#xff0c;三张高桌十…...

链表相关——Python实现

一、链表的创建及数据插入 示例代码&#xff1a; #1.定义一个结点类 class ListNode():def __init__(self,x,nextNone):self.valxself.nextnext #2.定义单链表 class LinkList():#2.1 创建一个头指针为空的链表def __init__(self,headNone):self.headNone#2.2 将数据插入链表…...

[OS_9] C 标准库和实现 | musl libc | offset

在你感觉有困难的时候&#xff0c;计算机 一定有解决办法 操作系统为我们提供了对象和操作它们的 API&#xff1a;我们学习了进程管理的 fork, execve, exit, waitpid&#xff1b;内存管理的 mmap&#xff1b;文件 (对象) 管理的 open, read, write, dup, close, pipe, …… 大…...

【氮化镓】质子辐照对 GaN-on-GaN PiN 二极管电导调制的影响

2025 年,中国科学技术大学的 Xuan Xie 等人采用实验研究的方法,深入探究了 10-MeV 和 50-MeV 质子辐照( fluence 最高达 11014 cm−2)对 kV 级垂直 GaN-on-GaN PiN 二极管的导电调制影响。研究背景在于空间应用中的功率电子电路易受质子、α 粒子和重离子等影响而降级甚至失…...

深入浅出限流算法(一):简单但有“坑”的固定窗口计数器

在现代分布式系统和 API 设计中&#xff0c;限流 (Rate Limiting) 是一个不可或缺的环节。它像一个尽职的门卫&#xff0c;保护着我们的服务资源&#xff0c;防止因突发流量或恶意攻击导致系统过载&#xff0c;同时也能确保资源的公平分配。 实现限流的算法多种多样&#xff0…...

项目上线流程梳理(Linux宝塔面板)

项目部署&#xff08;Linux宝塔面板&#xff09; 一、准备工作 1、 后端项目 梳理配置添加application-prod.yml使用maven进行打包生成jar包 2、前端项目 修改request.ts请求的后端端口&#xff08;服务器地址&#xff09;打包 二、服务器 1、服务器环境安装 2、初始化数…...

MCP Servers玩玩WebUI自动化

MCP Servers快速了解 一文搞懂 MCP Servers mcp server网站 https://mcpservers.orghttps://mcp.sohttps://glama.ai/mcp/servershttps://www.pulsemcp.com 一、安装&配置mcp clients mcp clients可以使用客户端&#xff08;常见claude desktop&#xff0c;但claude需…...

永磁同步电机控制算法-转速环电流环SMC控制器

一、原理介绍 为改进传统PI转速环电流环控制器易超调、抗干扰性能差的问题&#xff0c;转速环采用一阶滑模控制器&#xff0c;电流环采用二阶滑模控制器。 二、仿真验证 在MATLAB/simulink里面验证所提算法&#xff0c;采用和实验中一致的控制周期1e-4&#xff0c;电机部分计…...