C++面经

1.对虚表你了解多少

虚表,即虚函数表。在类中定义了虚函数时,编译器会自动为类对象创建一个虚函数表指针,用来定义虚函数表中的虚函数。

2.怎么理解C++的多态性

父类中具有虚函数,而子类中重写了父类的虚函数。父类的指针或引用指向或绑定子类对象,并通过父类指针或引用调用子类虚函数。在虚函数表中表现为子类的虚函数表中未被重写的虚函数指向父类虚函数,而被重写的虚函数指向重写后的虚函数。

3.对智能指针你了解多少

现代 C++:一文读懂智能指针 - 知乎 (zhihu.com)

智能指针用于更好地使用和管理动态内存。

三种智能指针:

shared_ptr:共享指向的资源,对资源引用数进行计数,当资源引用数为0时,自动对资源进行释放。

shared_ptr创建时分配两次内存:对象和控制块,故其大小为普通指针的两倍。控制块中包括资源的引用次数和弱引用次数、deleter、allocator等。当引用次数和弱引用次数均清零时,控制块释放。可用make_shared函数创建shared_ptr,自动分配一次内存。

unique_ptr:独占指向的资源,当离开unique_ptr的作用域时,自动对其进行释放。

weak_ptr:和shared_ptr同时使用,观察指向的资源是否存活,当shared_ptr指向的资源释放后,weak_ptr变为nullptr。weak_ptr不影响资源的生命周期。想使用weak_ptr指向的资源可以将weak_ptr升级为shared_ptr(Observe(wptr))。

4.在派生类中构造函数的调用顺序

无对象时

构造函数:先调用基类构造函数,再调用派生类构造函数

析构函数:先调用派生类析构函数,再调用基类构造函数

有对象时

构造函数:先调用基类构造函数,再调用对象构造函数,再调用派生类构造函数

析构函数:先调用派生类析构函数,再调用对象析构函数,再调用基类析构函数

5.对虚函数的理解

用virtual声明的成员函数,用以实现多态。

6.c++中重复使用两遍delete()会发生什么

第一次对指针调用delete()后指针会变为悬空指针(野指针),第二次对指针delete后会异常;在一些古老配置的机器中,可能会错误删除其它数据。

最好在delete后将指针置空(nullptr)

7.C++纯虚函数的作用

使基类不可实例化。

8.C++多继承

9.C++中delete数组怎么实现

delete[] p;自动析构释放数组中元素。

10.C++中实现double的比较

做减法运算,结果的正负。

11.C++静态继承和动态继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值