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

C++11 类的新功能

新的默认成员函数

C++11在6个默认成员函数基础上又加了两个:移动构造函数移动赋值函数

针对移动构造函数和移动赋值运算符重载有一些需要注意的点如下:

小结:

(1) 生成默认移动构造的条件比较严苛:必须是没有实现析构函数拷贝构造拷贝赋值重载中任意一个才会生成默认移动构造函数

(2)没有移动构造函数,编译器会自动调拷贝构造函数:

例如,有一个person类:

不写拷贝构造编译器会自动生成拷贝构造,同样不写构造,拷贝构造,移动构造,编译器才会生成默认移动构造:

 假设我们把其他类里的移动构造函数屏蔽调,编译器就调不了,没有移动构造函数,编译器会自动调拷贝构造函数:

假设我们给person类加一个析构函数:我们发现,它就调不了默认移动构造了:

default

假设我们要释放一下内存,调了析构,那么编译器就不会再生成默认移动构造函数

我们可以利用default强制编译器生成默认移动构造函数
但是强制生成默认移动构造函数会导致编译器不再生成默认拷贝构造函数这个时候有两个选择:

1.手动写一个拷贝构造函数:2.default强制编译器再生成一个默认拷贝构造函数:

delete

可以强制性禁止生成默认函数。

例如现在不让生成右值:

可变参数模板

我们之前知道可变参数函数printf:

 C++11把可变参数扩展到了模板。格式如下:

可变参数模板可以识别参数类型,个数: 

可以通过sizeof()计算参数包的个数:


http://www.kler.cn/a/154659.html

相关文章:

  • GitHub Copilot使用指南:助力开发者加速编程创新
  • ADS学习笔记 5. 微带天线设计
  • (一)Ubuntu20.04服务器端部署Stable-Diffusion-webui AI绘画环境
  • 0 -vscode搭建python环境教程参考(windows)
  • 【Vitepress报错】Error: [vitepress] 8 dead link(s) found.
  • 深度神经网络DNN反向传播BP算法公式推导
  • 实验8 图的操作
  • LangChain(0.0.339)官方文档四:Prompts下——prompt templates的存储、加载、组合和部分格式化
  • 肖sir__mysql之单表练习题2__(2)
  • 吉利展厅 | 透明OLED拼接2x2:科技与艺术的完美融合
  • 西南科技大学模拟电子技术实验四(集成运算放大器的线性应用)预习报告
  • Java Web——动态Web开发核心-Servlet
  • TA-Lib学习研究笔记(八)——Momentum Indicators 中
  • TLS、对称/非对称加密、CA认证
  • Zabbix HA高可用集群搭建
  • Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
  • 编程实战:类C语法的编译型脚本解释器(五)
  • HarmonyOS——解决本地模拟器无法选择设备的问题
  • 编程实战:类C语法的编译型脚本解释器(三)
  • 2312skia,15vulkan及技巧
  • Go语言实现深度学习的正向传播和反向传播
  • 深入理解Servlet(上)
  • 深度学习记录--计算图(前向后向传播)
  • 最新AI智能写作回答系统源码 附完整的搭建教程
  • java学习part29线程通信
  • 锐捷EWEB网管系统 RCE漏洞复现