博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective C++ 条款06
阅读量:5295 次
发布时间:2019-06-14

本文共 591 字,大约阅读时间需要 1 分钟。

若不想使用编译器自动生成的函数,就该明确拒绝。Explicitly disallow the use of compiler-generated functions you do not want.

 

当我们不希望编译器为我们生成默认的函数时,我们应该自己声明,并将这个函数声明为private且不实现。一般最常见的例子,就是拒绝当前对象的复制。但是这样就有一 个问题,因为针对private声明,成员函数和友元函数都可以访问,如果一旦调用,就会得到一个链接错误。这里说明了一个方法,用来实现拒绝复制的功能。

class Uncopyable{protected:Uncopyable(){}~Uncopyable(){}private:Uncopyable(const Uncopyable&);Uncopyable& operator=(const Uncopyable&);};class HomeForSale:private Uncopyable{};

 

通过以上的设计,类HomeForSale 就不会生成拷贝构造函数和赋值函数。因为在编译器为该类生成对应赋值函数/拷贝构造函数时会调用父类对应的函数,但是父类对应的函数为private,所以无法调用,因此不会生成。

 

转载于:https://www.cnblogs.com/lucy-lizhi/p/7448311.html

你可能感兴趣的文章
国内外免费电子书(数学、算法、图像、深度学习、机器学习)
查看>>
狄利克雷过程(Dirichlet Process)
查看>>
五子棋项目的实现(二)博弈树算法的描述
查看>>
字符串元转分
查看>>
201521123044 《Java程序设计》第1周学习总结
查看>>
MIT Scheme 的基本使用
查看>>
程序员的“机械同感”
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
博客第一弹—聊聊HTML的那些事
查看>>
Python Web框架Django (零)
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
Attribute(特性)与AOP
查看>>
第三次作业
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>