Effective C++学习笔记 (6)

来源:互联网 发布:js 分享到qq空间 编辑:程序博客网 时间:2024/05/02 01:27

本人学习C++不精,故重新学习,点滴记录与大家分享,不足之处还望大牛多多指教尴尬

若不想使用编译器自动生成的函数,就该明确拒绝

         其实本条款讲的比较简洁,由于条款5说明了“默认构造函数”、“拷贝构造函数”、“复制运算符”这三个虽然用户不自己定义,但是用到的时候编译器还是会为它们生成代码,所以就导致了一些情况下, 用户不想提供拷贝构造函数,但是编译器默认生成了,解决这类问题主要经过了如下几步。

1、 将拷贝构造函数生命为private的,这样一来外部就没法调用了;

2、 但是内部的成员方法或者friend类还是一样可以调用,那怎么办呢?只申明,不实现,这样一来用到的地方就会报一个连接错误;

3、 有时候大家看到连接错误会比看到编译错误更加抓狂,所以有什么方法能让该类问题在编译阶段就暴露出来呢,当然,实现一个基类,然后继承它,这样一来子类就不用关心拷贝构造函数的问题了。以下是一些代码样例。


无论是在类外部还是在类里面,都会在编译时就会报错,读者可以自己尝试其他几种情况。其实这个例子在C++中最常见的是ios_base类,读者可以查阅相关代码。


原创粉丝点击