C++常见面试题及答案

村口二丫2021-12-20 11:44

  最近互联网裁员大潮又在悄悄的进行着,人心不稳很多小伙伴想跳槽,问小编有没有常见的 C/C++ 面试题。这不正好今天小编就整理了一份。

C++常见面试题及答案

  深拷贝和浅拷贝。

  深度复制:指源对象和复制对象相互独立,有自己的存储空间,任何对象的变化都不会影响另一个对象。

  浅复制:指源对象与复制对象共用一个实体,但引用的变量不同(名称不同),任何对象的变化都会影响另一个对象。

  浅拷贝引起的问题:

  1)如果对象的数据成员是指针,浅复制只是复制指针,使两个指针指向相同的地址。调用分析函数时,delete一块内存两次,导致程序崩溃。

  2)因为指向同一块内存,任何一方的变化都会影响另一方。

  复制构造函数和赋值运算符有什么区别?

  复制(copy,又称复制)结构函数分为浅复制和深复制。浅复制和原对象共用一个实体,深复制会有独立的内存空间。如果一个复制结构函数没有显示定义,默认会自动生成一个,默认会是浅复制。

  赋值操作符用现有对象创建另一个对象,给对象一个新的值。因为赋予了新的值,所以对象本来就有价值,赋值函数只能被现有对象调用,不能凭空产生。如果没有显示声明,系统会默认生成赋值函数,但指向相同的内存,类似于浅拷贝。

  二者区别:

  1)复制构造函数生成新的类对象,但赋值操作符不能。

  2)2)由于复制结构函数是直接构建新的类对象,因此在初始化该对象之前,无需检查源对象是否与新对象相同。赋值操作符需要这个操作。此外,如果原始对象中有内存分配,则应首先释放内存。

  3)注意:当类中有指针类型的成员变量时,必须重写赋值并复制构造函数。默认情况下,不能使用,因为默认指向同一内存块时,delete指针变量会调用两次一块内存,导致程序崩溃。

  以上就是小编为大家整理发布的“C++常见面试题及答案”一文,更多相关内容尽在开课吧广场C++教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
算法刷题核心能力提升营