C++中 =default,=delete用法
2024-10-02 04:42:18
=default: 用于显式要求编译器提供合成版本的四大函数(构造、拷贝、析构、赋值)
例如:
class A{
public:
A() = default;
A(const A& a) = default;
A& operator=(A&);
~A() = default;
}
我们只能对具有合成版本的成员函数使用=default;
=delete,用于定义删除函数,在旧标准下,我们如果希望阻止拷贝可以通过显式声明拷贝
构造函数和拷贝赋值函数为private,但新标准下允许我们定义删除函数,例如:
struct NoCopy{
NoCopy() = default;
NoCopy(const NoCopy&) = delete; // 阻止拷贝
NoCopy& operator=(const NoCopy&) = delete; //阻止赋值
~NoCopy() = default;
}
=delete可以告知编译器,不生成默认的这些成员。
这里有两点要注意:
1、=delete可以使用在任意的函数上(可以引导函数匹配过程),除了析构函数(析构函数为删除函数将
导致该类型无法销毁);=default必须用在有默认合成函数的函数上。
2、=delete必须出现在函数第一次声明的时候。
参考:https://blog.csdn.net/u010640235/article/details/51286445
最新文章
- html5高级
- Android 利用SurfaceView进行图形绘制
- 阅读开发高手的代码 分享二则.NET开发框架的技巧
- 【OpenCV】立体匹配算法SSD、NCC、ASW的基础实现
- SQL Server调优系列进阶篇 - 深入剖析统计信息
- 当 ITOA 遇上 OneAlert,企业可以至少每年节省 3600 小时!
- QTP10破解
- JavaScript基础教程
- php打包文件为ZIP包后下载到本地
- 基于Entity Framework的自定义分页,增删改的通用实现
- LIMS系统仪器数据采集-使用xpdf解析pdf内容
- elasticsearch基本使用
- JSon与字符串的转换
- CentOS7设置固定IP
- js原生实现div渐入渐出
- c# DataSet转换为Json
- Tree 菜单 递归
- linux目录的权限
- 本地Navicat连不上Linux虚拟机MySQL数据库问题
- php超时时间说明
热门文章
- SDL(01-10)
- WPF ScrollViewer(滚动条) 自定义样式表制作 图文并茂
- Qt PNG 背景透明
- GIS基础软件及操作(十二)
- [机器学习]Bagging and Boosting
- Qt 使用 Google Breakpad 捕获程序崩溃报告(dump文件) good
- Qt 开发WEB Services客户端代码(使用gSoap)
- Color gradient in Delphi FireMonkey
- 【Linux】Linux下跟踪记录每个用户对主机服务器进行的操作
- Arcgis Server 10.4.1 搭建集群环境