有的类对象是独一无二的,不希望有复制函数,又因为如果不声明复制函数会自动生成复制函数,所以要明确拒绝。

两种不同方法

方法一


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

将默认的复制构造函数和操作符重载函数声明为private。这样类外调用时编译器会报错。

类内的函数或者友元函数调用时,连接器会报错。

方法二
如果在编译器就报错是更好的,可以尝试构造一个uncopy的基类。

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

这时因为是私有继承,是不能调用基类中的构造函数,所以编译时就报错。
下面附上不同继承方式的区别。

不同继承方式的区别

条款6:明确拒绝编译器自动生成的函数相关推荐

  1. Effective C++ 之 Item 6 : 若不想使用编译器自动生成的函数,就该明确拒绝

    Effective C++ chapter 2. 构造 / 析构 / 赋值运算 (Constructors, Destructors, and Assignment Operators) Item 6 ...

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

    C++若不想使用编译器自动生成的函数,就该明确拒绝 为什么要拒绝? 将copy构造函数或copy assignment操作符声明为private,并且不定义 使用delete(C++11 ) 为什么要 ...

  3. 条款6:若不想使用编译器自动生成的函数,就该明确拒绝

    如果自己定义的类中并不需要copy assignment操作符或者copy构造函数,为了避免编译器自动生成 因为编译器自动生成的没什么用,一般是按照顺序进行赋值或者拷贝,对于有对象内含有指针的话可能会 ...

  4. Effective C++_笔记_条款06_若不想使用编译器自动生成的函数,就该明确拒绝

    (整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 通常如果你不希望class支持某一特定机能,只要不声明对应函数就 ...

  5. Effective C++ -----条款06:若不想使用编译器自动生成的函数,就该明确拒绝

    为驳回编译器自动提供的功能,可将相应的成员函数声明为private并且不予实现. 使用像Uncopyable这样的base class也是一种做法(即先声明一个基类,然后私有继承它).这其实有点像使用 ...

  6. [EffectiveC++]item06:若不想使用编译器自动生成的函数,就该明确决绝

    转载于:https://www.cnblogs.com/jeanschen/p/3224542.html

  7. mysql的自动编码_mysql 自动生成编号函数

    根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001  (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...

  8. mysql生成序列_mysql 自动生成编号函数

    根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001  (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...

  9. php 直接显示缩略图,PHP自动生成缩略图函数的源码示例

    一个简单但功能比较完善的自动生成缩略图的函数,可以按需要对图片进行缩放.裁切.锁定宽或高.使用空白填充 以下为源码,比较简单,相信很容易看明白,记得打开 GD 库的支持哦: /** * 生成缩略图 * ...

最新文章

  1. 为物联网产业化发展提供坚实保障
  2. 固态器件理论(4)电子和“空穴”
  3. [转]新版.Net开发必备十大工具
  4. pcie转sata3硬盘不启动_没有地方塞硬盘?你或许需要这款扩展卡
  5. sql中的三元运算符
  6. CentOS-文件操作
  7. php获取周几,php怎么获得星期几
  8. GaussDB(for openGauss)让数据“存得下、算得快、算得准”
  9. Currency Exchange
  10. IAR常用快捷键及使用小技巧
  11. 跟随进度而变色进度条效果ios源码
  12. ImportError: DLL load failed: %1 不是有效的 Win32 应用程序
  13. java统计单机次数_java流类,快速统计出字符次数+++
  14. android office转pdf插件,office另存为pdf插件下载
  15. 免费复制百度文库的方法
  16. CH2-Java编程基础(7个案例实现)
  17. 直播软件开发,直播软件源码+三级分销模式的搭建
  18. Charles 手机https抓包
  19. 使用 IKuai 和 DDNSTO 外网访问你的设备(NAS、软路由)
  20. python实现手机通讯录和学生信息管理系统(4种方法)

热门文章

  1. UVa 208-Firetruck
  2. 【Android Studio快捷键】之导入相应包声明(import packages)
  3. highCharts图表入门简介
  4. openresty组成和技术特点
  5. 85.一致性哈希算法:hash模块
  6. 46muduo库使用示例(五)
  7. 【论文写作】毕业论文写作必备技巧:修改文章的诀窍
  8. Python基础篇:Python 程序流程控制,让你的代码有理有据
  9. endnote大客户版_Endnote软件的使用,有图有干货!
  10. C++类型转换方式总结