条款6:明确拒绝编译器自动生成的函数
有的类对象是独一无二的,不希望有复制函数,又因为如果不声明复制函数会自动生成复制函数,所以要明确拒绝。
两种不同方法
方法一
class HomeForSale:private Uncopyable{private:HomeForSale(const HomeForSale &);HomeForSale &operator=(const HomeForSale &);
};
将默认的复制构造函数和操作符重载函数声明为private。这样类外调用时编译器会报错。
类内的函数或者友元函数调用时,连接器会报错。
方法二
如果在编译器就报错是更好的,可以尝试构造一个uncopy的基类。
class Uncopyable{protected:Uncopyable(){}~Uncopyable(){}
private:Uncopyable(const Uncopyable &);Uncopyable& operator = (const Uncopyable&);
};class HomeForSale:private Uncopyable{};
这时因为是私有继承,是不能调用基类中的构造函数,所以编译时就报错。
下面附上不同继承方式的区别。
不同继承方式的区别
条款6:明确拒绝编译器自动生成的函数相关推荐
- Effective C++ 之 Item 6 : 若不想使用编译器自动生成的函数,就该明确拒绝
Effective C++ chapter 2. 构造 / 析构 / 赋值运算 (Constructors, Destructors, and Assignment Operators) Item 6 ...
- C++若不想使用编译器自动生成的函数,就该明确拒绝
C++若不想使用编译器自动生成的函数,就该明确拒绝 为什么要拒绝? 将copy构造函数或copy assignment操作符声明为private,并且不定义 使用delete(C++11 ) 为什么要 ...
- 条款6:若不想使用编译器自动生成的函数,就该明确拒绝
如果自己定义的类中并不需要copy assignment操作符或者copy构造函数,为了避免编译器自动生成 因为编译器自动生成的没什么用,一般是按照顺序进行赋值或者拷贝,对于有对象内含有指针的话可能会 ...
- Effective C++_笔记_条款06_若不想使用编译器自动生成的函数,就该明确拒绝
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 通常如果你不希望class支持某一特定机能,只要不声明对应函数就 ...
- Effective C++ -----条款06:若不想使用编译器自动生成的函数,就该明确拒绝
为驳回编译器自动提供的功能,可将相应的成员函数声明为private并且不予实现. 使用像Uncopyable这样的base class也是一种做法(即先声明一个基类,然后私有继承它).这其实有点像使用 ...
- [EffectiveC++]item06:若不想使用编译器自动生成的函数,就该明确决绝
转载于:https://www.cnblogs.com/jeanschen/p/3224542.html
- mysql的自动编码_mysql 自动生成编号函数
根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001 (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...
- mysql生成序列_mysql 自动生成编号函数
根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001 (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...
- php 直接显示缩略图,PHP自动生成缩略图函数的源码示例
一个简单但功能比较完善的自动生成缩略图的函数,可以按需要对图片进行缩放.裁切.锁定宽或高.使用空白填充 以下为源码,比较简单,相信很容易看明白,记得打开 GD 库的支持哦: /** * 生成缩略图 * ...
最新文章
- .exe已停止工作_这几天我遇到了前所未有的问题windows10 1809 explorer.exe资源管理器频繁崩溃...
- DCMTK:数据字典测试程序
- java advance_JavaAdvance
- [BUUCTF-pwn]——jarvisoj_level4
- 乙级(Basic Level) 1009 数字黑洞
- 【批处理】windows环境将文件放置在虚拟盘
- javascript中正则表达式和ruby中的一点差异
- Web项目(四)————异步队列的实现
- 推荐系统(Recommendation system )
- k8s 1.16安装metrics server
- Swift - 动画效果的实现方法总结(附样例)
- 语音计算机怎么切换音乐模式,怎么实现一个设备播放一个程序的声音呢?
- YOLO1、YOLO2、YOLO3对比
- OpenHarmony代码下载编译流程记录
- 全球顶级黑客对决AI GeekPwn2017黑客大赛看点曝光
- Failed to declare queue(s):[XXX]问题解决
- P1419 寻找段落
- 云管平台监控实践分享
- 枪火重生灵界狂潮攻略 (二)老虎流派
- 天猫页面之一(公共页面)
热门文章
- 让你的sublime text写C代码 (sublime text 2 配置构建C开发环境)
- Android 学习--ListView 的使用(一)
- python精度_通过Python可以达到的最高时间精度范围是多少?
- 【论文写作】网上办公自动系统中功能需求如何写
- asp access服装商城计算机设计网站作品
- java功能性需求分析_Java-CS-Record/3、结构化需求分析.md at main · yzx66-net/Java-CS-Record · GitHub...
- 小车自动往返工作原理_请把小车自动往返控制线路的工作原理描述一下。
- java中的技术_Java中的四个核心技术思想
- oracle 10g 扩表空间,Oracle 10g 表空间管理(一)
- c 连接mysql总是失败_Windows 下用C++连接MYSQL失败