Effective C++学习笔记 (6)

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

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

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

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

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

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

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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值