C++常考面试题(第二篇)

本文详细解析了C++中的拷贝构造函数、深浅拷贝的区别,友元的作用,单例模式的应用,异常处理流程,面向对象的三大特性(封装、继承、多态),以及纯虚函数、抽象类和虚析构函数的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题目 16】拷贝构造函数的格式和作用,自动调用拷贝构造函数的几种情形?

格式:没有返回值 函数名和类名相同 参数:const person& 类型引用
作用:逐个给成员变量进行赋值三种情形下会调用拷贝构造函数
(1) 当用一个已有对象给另一个同类的对象进行初始化时 person a = b;
(2) 当一个函数的参数是一个类的对象时 void fun(person p); fun(a);
(3) 当一个函数的返回值是一个类的对象时 person fun(); person a = fun();
问题: 拷贝构造函数是值传递还是什么,为什么?
引用传递
因为使用值传递导致无限拷贝,进入死循环
person(const person other)//const person other = a;拷贝
{ }
person a;
person b = a;

【题目 17】深拷贝与浅拷贝的区别?

当类中有指针成员时,
1.浅拷贝只将指针中保存的地址复制给新的对象,实际上还是指的同一块内存,当析构函数对两个对象进行内 存释放时会出现 double free 异常(释放第一个对象时,已将内存删除,第二个对象释放时还是找的原有地址, 但内存已不存在)。
2.深拷贝拷贝时不拷贝地址,是将原对象指针中指向的内存进行拷贝,新对象指针存储新内存的地址,原对象指针存储原内存的地址,所以释放时互不干扰。 (系统默认的拷贝构造:浅拷贝)

【题目 18】友元的作用及特点?

当在类的外面想要使用该类的私有成员,可以通过友元来破坏封装性;
可以使用友元函数(在类外编写函数,在类内声明为友元函数)、友元类(声明一个类来访问另一个类中的私有成员)。
特点:友元不能继承,友元不能传递,友元是单向的。

 

 

【题目 19】设计模式--单例模式

作用:单例模式是保证程序中这个类只有一个实例对象;
什么情况下想到使用单例模式:有一个类的功能,多处都要使用,多次的创建与销毁。
实现方式:
1.构造函数和拷贝构造函数私有化,保证在类的外部不能创建和拷贝对象(0 例)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值