当前位置: 首页 > news >正文

C++中的空类,编译器默认可以产生哪些成员函数

       一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,如果你写 
class Empty{}; 
就相当于: 
class Empty 

    public: 
        Empty(); 
        Empty(const Empty&); 
        ~Empty(); 
        Empty& operator=(const Empty& rhs); 
        Empty* operator&(); 
        const Empty* operator&() const; 
}; 
需要注意的是只有当你需要用到这些函数的时候,编译器才会去定义它们。

     参考:侯捷--effective  c++
     条款45:   弄清C++在幕后为你所写、所调用的函数   
     一个空类什么时候不是空类?   
     ----   当C++编译器通过它的时候。如果你没有声明下列函数,体贴的编译器会声明它自己的版本。这些函数是:一个拷贝构造函数,一个赋值运算符,一个析构函数,一对取址运算符。另外,如果你没有声明任何构造函数,它也将为你声明一个缺省构造函数。所有这些函数都是公有的。 



相关文章:

  • C/C++内存知识
  • 从错误中得知--关于字符串我以前没注意的东西
  • 从错误中得知--有关malloc自己容易错的地方。
  • C语言学习之内存管理函数malloc()和free()
  • 笔记本电池常识和THINKPAD电源管理器介绍--能设置充电起点和终点
  • C++开发人员必备:86本C++教程电子书下载
  • 各种排序算法的复习
  • 简单算法--闰平年问题
  • POJ2080--Calendar以及一个类似的编程面试题
  • 简单算法--求最大公约数和最小公倍数
  • Linux--软件安装+常用命令--1:Ubuntu Server 12.04 安装手记 + Ubuntu 12.04 菜鸟完全使用教程PDF
  • ForFisrtWork:为了下午六点半的京东方笔试
  • ForFisrtWork--No.5:刚考完2013软件开发B卷,回忆题目并总结之
  • 简单算法--将一个整型数字逆转
  • 简单算法--交换两个数不使用中间变量
  • 【译】理解JavaScript:new 关键字
  • Angular Elements 及其运作原理
  • ES6 ...操作符
  • HTTP 简介
  • HTTP中的ETag在移动客户端的应用
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Octave 入门
  • ReactNativeweexDeviceOne对比
  • unity如何实现一个固定宽度的orthagraphic相机
  • 记一次用 NodeJs 实现模拟登录的思路
  • 聊聊sentinel的DegradeSlot
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 强力优化Rancher k8s中国区的使用体验
  • 译自由幺半群
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​用户画像从0到100的构建思路
  • #13 yum、编译安装与sed命令的使用
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (175)FPGA门控时钟技术
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (js)循环条件满足时终止循环
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (力扣题库)跳跃游戏II(c++)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (万字长文)Spring的核心知识尽揽其中
  • (一)VirtualBox安装增强功能
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)负载均衡,回话保持,cookie
  • **PHP二维数组遍历时同时赋值
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net 获取url的方法
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?