本人学习C++不精,故重新学习,点滴记录与大家分享,不足之处还望大牛多多指教
。
若不想使用编译器自动生成的函数,就该明确拒绝
其实本条款讲的比较简洁,由于条款5说明了“默认构造函数”、“拷贝构造函数”、“复制运算符”这三个虽然用户不自己定义,但是用到的时候编译器还是会为它们生成代码,所以就导致了一些情况下, 用户不想提供拷贝构造函数,但是编译器默认生成了,解决这类问题主要经过了如下几步。
1、 将拷贝构造函数生命为private的,这样一来外部就没法调用了;
2、 但是内部的成员方法或者friend类还是一样可以调用,那怎么办呢?只申明,不实现,这样一来用到的地方就会报一个连接错误;
3、 有时候大家看到连接错误会比看到编译错误更加抓狂,所以有什么方法能让该类问题在编译阶段就暴露出来呢,当然,实现一个基类,然后继承它,这样一来子类就不用关心拷贝构造函数的问题了。以下是一些代码样例。

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

博主因C++学习不精重新学习并分享心得。若不想使用编译器自动生成的函数,可将拷贝构造函数声明为private,只声明不实现,或实现基类让子类继承。还给出代码样例,常见于ios_base类。
&spm=1001.2101.3001.5002&articleId=7940275&d=1&t=3&u=d789e2def1d2494c8f65d50924a69466)
342

被折叠的 条评论
为什么被折叠?



