默认构造函数在这篇博客中已经写得很明白。
https://blog.csdn.net/bear_n/article/details/72798301

文章目录

  • 1.什么是默认构造函数?
  • 2.什么情况会自动生成默认构造函数,即编译器生成默认构造函数?

1.什么是默认构造函数?

默认构造函数是可以不用实参进行调用的构造函数,它包括了以下两种情况:

没有带明显形参的构造函数。
提供了默认实参的构造函数。

类设计者可以自己写一个默认构造函数。

编译器帮我们写的默认构造函数,称为“合成的默认构造函数”。

2.什么情况会自动生成默认构造函数,即编译器生成默认构造函数?

  1. 带有默认构造函数的类成员对象,如果一个类没有任何构造函数,但它含有一个成员对象,而后者有默认构造函数,那么编译器就为该类合成出一个默认构造函数。不过这个合成操作只有在构造函数真正被需要的时候才会发生;如果一个类A含有多个成员类对象的话,那么类A的每一个构造函数必须调用每一个成员对象的默认构造函数而且必须按照类对象在类A中的声明顺序进行;

  2. 带有默认构造函数的基类,如果一个没有任务构造函数的派生类派生自一个带有默认构造函数基类,那么该派生类会合成一个构造函数调用上一层基类的默认构造函数;

  3. 带有一个虚函数的类

  4. 带有一个虚基类的类

C++学习——默认构造函数相关推荐

  1. c++ 虚函数_到底什么情况下会合成默认构造函数?

    来源:https://www.cnblogs.com/QG-whz/p/4676481.html 作者:good luck 编辑:公众号[编程珠玑] 编辑注:没有构造函数的时候编译器一定会生成默认构造 ...

  2. C++ 合成默认构造函数的真相

    http://www.cnblogs.com/QG-whz/p/4676481.html 对于C++默认构造函数,我曾经有两点误解: 类如果没有定义任何的构造函数,那么编译器(一定会!)将为类定义一个 ...

  3. C++编译器会对没有构造函数的类生成默认构造函数吗?

    之前在上C++的课的时候,印象中有那么一句话: 如果一个类没有任何构造函数,那么编译器会生成一个默认的构造函数 今天在看<深度探索C++对象模型>的第二章:"构造函数语意学&qu ...

  4. C++编译器何时为用户提供默认构造函数

    第一种是类成员中有成员是类对象,并且该成员的类含有默认构造函数,那么C++编译器会帮你给这个类也生成一个默认构造函数,用来调用其成员对象的构造函数,完成该成员的初始化构造.需要强调的是,如果这个成员的 ...

  5. move std 函数 示例_确保(值类型)可拷贝类有默认构造函数

    C.43: Ensure that a copyable (value type) class has a default constructor C.43:确保(值类型)可拷贝类有默认构造函数 Re ...

  6. C++ 编译器默认构造函数奇怪问题

    非常奇怪的问题,如下 struct MyType { public:     int i;     void* operator new(size_t size,void *p,int i)     ...

  7. akka actor java_Akka:使用非默认构造函数在Scala中定义一个actor并从Java代码创建它 - java...

    Akka Scala演员必须扩展akka.actor.Actor Akka Java actor必须扩展akka.actor.UntypedActor 因此,在使用非默认构造函数定义Scala act ...

  8. 深度探索C++ 对象模型(3)-默认构造函数Default Constructor

    1. Default Constructor只对base class subobjects和member class objects初始化,对data member不做操作 2. 编译器构造Defau ...

  9. 2020-12-18(何种情况下编译器会提供默认构造函数)

    当问到大家什么时候会提供默认构造函数时,有的人会不会一下子就想到当我们没有定义构造函数的时候,它就会提供默认的构造函数,但我们想想一个问题,假如没有意义的情况下提供了默认构造函数,那是不是把编译器搞得 ...

最新文章

  1. 公司前台打印机的连接方法(超级简单)
  2. 如何阅读一本书 pdf_如何2个小时内快速阅读一本书?
  3. 2.9 情感分类-深度学习第五课《序列模型》-Stanford吴恩达教授
  4. 程序员如何技术划水,手把手教你写Android项目文档,绝对干货
  5. sublime快捷键_安利 | sublime
  6. Second Highest Salary --leetCode
  7. 华为机试HJ25:数据分类处理
  8. 无法解析 org.apache.commons:commons-pool2:2.4.2
  9. Delphi XE2有什么新功能
  10. 使用docx4j解析word模板,替换占位符生成新的docx,并生成pdf
  11. Java线程状态及其转移
  12. IB心理学生物分析模块
  13. windows 系统清理工具
  14. steam饥荒存档备份_如何手动备份您的Steam游戏文件
  15. Python实现线性回归拟合并绘图
  16. 【视频开发】【CUDA开发】ffmpeg nvenc编码
  17. 模拟电路软件oracle,电子商务模拟教学平台
  18. bsod错误代码。_修复:安装Windows 7时HIDCLA​​SS.SYS中的蓝屏死机(BSOD)7E
  19. gif动图怎么制作?教你一分钟搞定
  20. 计算机基础——数据结构篇概览

热门文章

  1. LeetCode 1658. 将 x 减到 0 的最小操作数(哈希)
  2. LeetCode 1366. 通过投票对团队排名(自定义排序)
  3. mysql写什么不同_mysql - 编译配置PHP时,两种配置写法有什么不同
  4. edge linux 下载软件,在Linux上安装edge浏览器
  5. 新年第二弹|卖萌屋私藏书单大公开
  6. SIGIR2020 | 淘宝提出结合知识图谱与大规模推荐的新框架ATBRG
  7. ACL2020 | FastBERT:放飞BERT的推理速度
  8. 技术动态 | 自底向上构建知识图谱全过程
  9. 技术动态 | 清华大学开源OpenKE:知识表示学习平台
  10. 清华CrossWOZ,助你徒手搭建任务导向对话系统