Item 6:禁用那些不需要的缺省方法 Effective C++笔记
来源:互联网 发布:mac绝对路径 编辑:程序博客网 时间:2024/06/14 06:33
Item 6: Explicitly disallow the use of compiler-generated functions you do not want.
在C++中,编译器会自动生成一些你没有显式定义的函数,它们包括:构造函数、析构函数、复制构造函数、=
运算符。 关于这些函数是的调用时机可以参考:那些被C++默默地声明和调用的函数。
这些默认生成的函数给我们的类提供了缺省的功能,比如赋值、复制、构造、析构等; 同时也给我我们重载这些函数的机会,借此实现更加复杂的对象行为。
然而有时候我们希望禁用掉这些函数。比如对于一个单例而言,我们不希望它能够被直接构造,或者拷贝。 我们通过把自动生成的函数设为private
来禁用它, Effective C++笔记:确保变量的初始化 提到的单例是一个例子。这里我们来实现一个不可拷贝的类Uncopyable
, 需要声明其复制构造函数与=
运算符为private
:
class Uncopyable{private: Uncopyable(const Uncopyable&); Uncopyable& operator=(const Uncopyable&);};
值得一提的是,Uncopyable
的不可拷贝特性是可以继承的。例如:
class Homeforsale: private Uncopyable{ ...};
在编译器默认生成的拷贝构造函数和赋值运算符中,会调用父类的相应函数。 然而这些调用将会被拒绝,因为是private
继承的~
除非注明,本博客文章均为原创,转载请以链接形式标明本文地址: http://harttle.com/2015/07/23/effective-cpp-6.html
0 0
- Item 6:禁用那些不需要的缺省方法 Effective C++笔记
- 《Effective C#》Item 2:定义常量的两种方法
- 《Effective C#》Item 2:定义常量的两种方法
- Item 5:那些被C++默默地声明和调用的函数 Effective C++笔记
- [翻译] Effective C++, 3rd Edition, Item 37: 绝不要重定义一个函数的 inherited default parameter value(通过继承得到的缺省参数值)
- Effective C++ Item 37 绝不重新定义继承而来的缺省参数值
- 绝不重新定义继承而来的缺省参数值--from Effective c++ item 37
- <Effective Mordern C++>Item 6:UseTheExplicitlyTypedInitializerIdiomWhenAutoDeducesUndesiredTypes
- 转:《Effective C#》Item 2:定义常量的两种方法
- More Effective C++:避免缺省构造函数
- <Effective Mordern C++>笔记:Item 2:Understand auto type deduction.
- <Effective Mordern C++>笔记:Item 3:Understand decltype .
- 《Effective C++》37: 绝不重新定义继承而来的缺省的参数值
- More Effective C++:Item 27
- More Effective C++:Item 27
- 《Effective C++》读书笔记之item37:绝不重新定义继承而来的缺省参数值
- Effective C++:条款37:绝不重新定义继承而来的缺省参数值
- 绝不要重新定义继承而来的缺省参数值(Effective C++_37)
- 冲吧!不必准备好
- httpd: unrecognized service 的解决方案
- Mysql 转换表的引擎
- leetcode: (21) Merge Two Sorted Lists
- [leetcode-257]Binary Tree Paths(java)
- Item 6:禁用那些不需要的缺省方法 Effective C++笔记
- android studio模板
- Item 7:将多态基类的析构函数声明为虚函数 Effective C++笔记
- zend_db_table_row
- 黑马程序员-------Java笔记-------集合综合题(常考的三种题)
- 博客迁移:Shell脚本批量文件处理
- iOS 常用一些小工具
- RSA令牌动态口令生成原理
- Item 8:析构函数不要抛出异常 Effective C++笔记