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

【C++ 面试 - 面向对象】每日 3 题(十三)

✍个人博客:Pandaconda-CSDN博客

📣专栏地址:http://t.csdnimg.cn/fYaBd

📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

37. 什么情况会自动生成默认构造函数?

  1. 带有默认构造函数的类成员对象,如果一个类没有任何构造函数,但它含有一个成员对象,而后者有默认构造函数,那么编译器就为该类合成出一个默认构造函数。不过这个合成操作只有在构造函数真正被需要的时候才会发生;

  2. 如果一个类 A 含有多个成员类对象的话,那么类 A 的每一个构造函数必须调用每一个成员对象的默认构造函数而且必须按照类对象在类 A 中的声明顺序进行;

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

  4. 带有一个虚函数的类

  5. 带有一个虚基类的类

  6. 合成的默认构造函数中,只有基类子对象和成员类对象会被初始化。所有其他的非静态数据成员都不会被初始化。

38. 如何避免外部实例化这个类的对象?

  1. 为类定义纯虚成员函数,变成抽象类

  2. 将构造函数声明为 protect 或者 private

  3. C++11 =delete

 39. 如何实现一个不可以被继承的类?

将基类的构造函数私有化,这样派生类就无法从基类中调用其构造函数进行构造。

40. 拷贝构造函数形参去掉 &,会出现什么问题?

当拷贝构造函数的形参去掉 &(即不使用引用参数)时,会触发额外的拷贝操作,导致对象的拷贝构造函数被递归调用,最终导致栈溢出或性能下降,具体取决于对象的复杂性和大小。这是因为对象的拷贝构造函数会被用于复制参数传递给函数的对象,从而导致无限循环的拷贝。让我们用一个示例说明一下这个问题。


http://www.mrgr.cn/news/10546.html

相关文章:

  • 【逐行注释】MATLAB代码,一维情况的EKF滤波,代码与详细注释|附下载链接
  • MySQL集群技术1——编译部署mysql
  • 【IEEE独立出版】第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024,9月13-15)
  • 力扣: 反转链表
  • 线程面试题
  • java springboot 集成activeMQ(保姆级别教程)
  • C++ | Leetcode C++题解之第372题超级次方
  • 饮水机复杂交互功能联网调试
  • 十六、栈和队列
  • 深度学习学习经验——变换器(Transformer)
  • MacOS 升级 Ruby 版本的操作与考量
  • 大数据技术之Zookeeper概述(1)
  • 何为MethodHandles?
  • 基于微信小程序靓丽内蒙古APP(源码+定制+辅导)
  • [C语言]-基础知识点梳理-动态内存管理
  • 最近云计算领域有哪些重大进展?
  • 汽车冷却液温度传感器的作用与检测方法
  • spring-security-oauth2授权服务原理
  • 101. 对称二叉树(递归法)
  • 【系统分析师】-WEB开发技术