《Effective C++》读书笔之六 Item 6. Explicitly disallow the use of compile-generated functions
Item 6. Explicitly disallow the use of compile-generated functions you do not want.
本篇条目介绍了如何防止编译器调用其自动创建的函数(item5中提到的4种函数)。
class NonCom{public:.....private:NonCom(const NonCom&);NonCom& operator=(const NonCom&);...};
If you inadvertently try to do call this function in a member or a friend function, the linker will complain.
class noncopyable{public:noncopyable(){}~noncopyable(){}private:noncopyable(const noncopyable&);noncopyable& operator=(const noncopyable&);};class NonCom : noncopyable{...};
This works, because compilers will try to generate a copy constructor and a copy assignment operator if anybody — even a member or friend function — tries to copy a NonCom object. As Item 12 (See 10.8) explains, the compiler- generated versions of these functions will try to call their base class counterparts, and those calls will be rejected, because the copying operations are private in the base class.
- To disallow functionality automatically provided by compilers, declare the corresponding member functions private and give no implementations. Using a base class like Uncopyable is one way to do this.
《Effective C++》读书笔之六 Item 6. Explicitly disallow the use of compile-generated functions相关推荐
- Effective C++记录(6):Explicitly disallow the use of compiler-generated functions you do not want
若不想使用编译器自动生成的函数,就该明确拒绝 当一个对象的存在就是独一无二的,设计之初该类就不允许被拷贝赋值,此时就应该处理该类中拷贝构造以及拷贝赋值操作符. 方法: 1. 将拷贝构造以及拷贝赋值操作 ...
- Effective C++读书笔记 摘自 pandawuwyj的专栏
Effective C++读书笔记(0) Start 声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节. std::size_t numDigits(i ...
- more effective c++和effective c++读书笔记
转载自http://bellgrade.blog.163.com/blog/static/83155959200863113228254/,方便日后自己查阅, More Effective C++读书 ...
- java pda开发_《Java 手机/PDA 程序设计入门》读书笔
JDBC针对桌面平台或企业用户设计,不适合移动通讯设备. MIDP为的永久性数据储存提供了面向纪录的数据库(Record Orieted Database),称作"记录管理系统"R ...
- Beginning WF4读书笔计 - 第一章 03设计示图及xaml代码
通过<Beginning WF4读书笔计 - 第一章 01创建一个简单的工作流>和<Beginning WF4读书笔计 - 第一章 02添加程序元素>的介绍后,本示例基本完成. ...
- Effective Java读书笔记(二)
Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...
- Maltab在数学建模中的应用(第二版)——读书笔记下
Maltab在数学建模中的应用(第二版)--读书笔记下 1彩票中的数学2002B 总结 2露天卡车调度问题2003B 总结 3奥运会商圈规划问题2004A 总结 4交巡警服务平台的设置与调度2011B ...
- Effective STL 读书笔记
Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...
- Effective Java 读书笔记(七):通用程序设计
Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...
最新文章
- 从自来水公司到社会工作者再做运维,我深耕 IT 一线的这 8 年
- Spring MVC 拦截器 interceptor 详解
- 鸟哥的Linux私房菜(基础篇)- 第二十六章、Linux 核心编译与管理
- DAY3-Flask项目
- c# 标准正太分布函数_数据标准化处理中的min-max和zscore
- 深入学习二叉树(三) 霍夫曼树
- spark中dataframe解析_SparkSql 中 JOIN的实现
- 案例演示按角色的form认证实现过程
- 7-1 射击游戏 (20 分)
- Git学习系列之如何正确且高效地将本地项目上传到Github(图文详解)
- C#版Windows服务安装卸载小工具-附源码
- 计算机基础98均9,第三章 计算机基础 Windows98 (第二讲).ppt
- HTML 5 会为 Flash 和 Silverlight 送终吗?
- Chrome插件安装 程序包无效
- 电气技术与计算机技术结合,探析计算机与电气自动化技术有机结合.doc
- AiTrust下预训练和小样本学习在中文医疗信息处理挑战榜CBLUE表现
- 0501 0503 模块区别_深圳兼容思科光模块市场
- Codevs 侦探推理
- MySQL学习笔记--常用存储引擎InnoDB与MyISAM总结
- Java对象内存布局(JOL)