阻止拷贝
来源:互联网 发布:mina 接收数据不完整 编辑:程序博客网 时间:2024/05/21 09:22
大多数类应该定义默认构造函数、拷贝构造函数和拷贝赋值运算符,无论是隐式的还是显式的。
虽然大多数类应该定义(而且通常也的确定义了)拷贝构造函数的拷贝赋值运算符,但对某些类来说,这些操作没有合理的意义。
定义删除的函数
在新标准下,我们可以通过将拷贝构造函数和拷贝赋值运算符定义为删除的函数来阻止拷贝。删除的函数是这样一种函数:我们虽然声明了它们,但不能以任何方式使用它们。
与=default不同,=delete必须出现在函数第一次声明的时候。
析构函数不能是删除的成员
如果析构函数被删除,就无法销毁此类型的对象了。
对于删除了析构函数的类型,虽然我们不能定义这种类型的变量或成员,但是可以动态分配这种类型的对象。但是,不能释放这些对象。
合成的拷贝控制成员可能是删除的
对某些类来说,编译器将这些合成的成员定义为删除的函数:
1。如果类的某个成员的析构函数是删除的或不可访问的,则类的合成析构函数被定义为删除的。
2。如果类的某个成员的拷贝构造函数是删除的或不可访问的,则类的合成拷贝构造函数被定义为删除的。如果类的某个成员的析构函数是删除的或不可访问的,则类的合成拷贝构造函数也被定义为删除的。
3。如果类的某个成员的拷贝赋值运算符是删除的或不可访问的,或是类有一个const的或引用成员,则类的合成拷贝赋值运算符被定义为删除的。
4。如果类的某个成员的析构函数是删除的或不可访问的,或是类有一个引用成员,它没有类内初始化器,或是类有一个const成员,它没有类内初始化器且类型未显式定义默认构造函数,则该类的默认构造函数被定义为删除的。
本质上,这些规则的含义是:如果一个类有数据成员不能默认构造、拷贝、复制或销毁,则对应的成员函数将被定义为删除的。
本质上,当不可能拷贝、赋值或销毁类的成员时,类的合成拷贝控制成员就被定义为删除的。
- 阻止拷贝
- 阻止拷贝
- C++阻止拷贝
- C++11新标准的阻止拷贝方案
- 阻止拷贝的三种方式
- Effective C++ Item6 如何阻止对象拷贝函数?
- 阻止c++为你创造默认的拷贝构造函数和 赋值语句
- 条款6:阻止编译器自动生成拷贝构造函数和赋值函数
- Jquery字符串,数组(拷贝、删选、合并等),each循环,阻止冒泡,ajax出错,$.grep筛选,$.param序列化,$.when
- 拷贝
- 拷贝
- 拷贝
- 拷贝
- 拷贝
- 拷贝
- 拷贝
- 【JQuery学习总结2 】Jquery字符串, 数组(拷贝、删选、合并等), each循环,阻止冒泡,ajax出错,$.grep筛选,$.param序列化
- 在word开发中,跨文件数据拷贝粘贴出现ComException(“组织策略阻止了该操作“)异常的处理方式
- linux下sort用法
- 无焦点下获取条码枪返回值的Hook(再次改良版)
- 25端口
- android QQ侧滑效果
- 矩阵乘法
- 阻止拷贝
- 2015-第6周项目3-人数不定的工资类
- mysql-5.6.24-x64安装 环境window server2008 x64
- LeetCode Search in Rotated Sorted Array
- 解决Sublime Text 2中文显示乱码问题
- 字符串匹配
- 《The C programming language》学习笔记
- C# Socket编程 同步以及异步通信
- 专家是怎么形成的