【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. 拷 贝构造函数形参去掉 &,会出现什么问题?

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

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值