[原创文章欢迎转载,但请保留作者信息]
Justin 于 2009-10-30
Item5和Item6说的东东很接近,难道是Scott讨厌54这个数才把一个Item分成两个凑成55的?
如果没有定义类的构造函数/拷贝函数/拷贝构造函数/析构函数,编译器会自作主张帮你定义这些函数,而且还是public外加inline的。(估计这是最冷的冷饭了)
当然编译器的智商也是有限的,在帮你写拷贝函数时仅限于帮你处理一下诸如int的内嵌类型(build-in type)以及自身就有拷贝函数的类对象,再复杂一点的就搞不定了。
上面就是Item5的内容,Item6站在巨人的肩膀上,找到了如何礼貌谢绝编译器傻乎乎地帮你做这些事情:
有时候需要禁止某个类对象的拷贝操作,就要避免以上函数的自动生成,需要自己定义这些函数,并且有以下特性
-
private
-
只是声明,不给予实现(give no implementation)
当然要是还是觉得麻烦,干脆直接继承Boost的noncopyable(自己写一个类似的也可以),就可以不费吹灰之力的获得不能拷贝的特性。
什么?写完了?貌似没吃饱啊……