读书笔记:Effective C++ 炒冷饭 – Item 5&6

读书笔记:Effective C++ 炒冷饭 – Item 5&6

[原创文章欢迎转载,但请保留作者信息]

Justin 于 2009-10-30

Item5和Item6说的东东很接近,难道是Scott讨厌54这个数才把一个Item分成两个凑成55的?

如果没有定义类的构造函数/拷贝函数/拷贝构造函数/析构函数,编译器会自作主张帮你定义这些函数,而且还是public外加inline的。(估计这是最冷的冷饭了)
当然编译器的智商也是有限的,在帮你写拷贝函数时仅限于帮你处理一下诸如int的内嵌类型(build-in type)以及自身就有拷贝函数的类对象,再复杂一点的就搞不定了。

上面就是Item5的内容,Item6站在巨人的肩膀上,找到了如何礼貌谢绝编译器傻乎乎地帮你做这些事情:
   有时候需要禁止某个类对象的拷贝操作,就要避免以上函数的自动生成,需要自己定义这些函数,并且有以下特性

  1. private
  2. 只是声明,不给予实现(give no implementation)

当然要是还是觉得麻烦,干脆直接继承Boost的noncopyable(自己写一个类似的也可以),就可以不费吹灰之力的获得不能拷贝的特性。

什么?写完了?貌似没吃饱啊……

你可能感兴趣的:(读书笔记:Effective C++ 炒冷饭 – Item 5&6)