排序
面试题:C++ new操作的背后都经历了什么?
在C++中,new操作符用于动态分配内存并构造对象。它的背后经历了一系列步骤,包括内存分配、对象构造以及可能的异常处理。以下是new操作的详细过程: 1. 内存分配 new操作符首先调用operator ne...
面试题:C++ 中为什么 new[] 和 delete[] 一定要配对使用?
在 C++ 中,new[] 和 delete[] 必须配对使用,因为它们的行为与 new 和 delete 有本质区别。混用 new[] 和 delete 或 new ...
面试题:C++ 成员变量的初始化顺序是固定的吗?
是的,C++ 中成员变量的初始化顺序是固定的,并且与成员变量在类定义中的声明顺序一致,而不是与构造函数初始化列表中的顺序一致。这是C++语言的一个明确规定,了解这一点对于避免潜在的初始化...
面试题:C++ 中模板的实现一定要写在头文件中吗?
在 C++ 中,模板的实现通常需要写在头文件中,这是因为模板的实例化机制与普通函数或类的编译方式不同。以下是详细解释: 1. 为什么模板的实现通常写在头文件中? 模板的实现通常需要放在头文件...
面试题:请介绍下std::sort的原理?底层是快速排序吗?
std::sort 是 C++ 标准库中用于对容器(如 std::vector、std::array 等)或范围进行排序的算法。它的实现原理和底层排序算法并不是固定的快速排序,而是一种混合排序算法,结合...
面试题:C++ 中 shared_from_this 的作用是什么?它有什么优点?
shared_from_this 是 C++ 标准库中的一个工具,用于在类的成员函数中安全地获取一个指向当前对象的 std::shared_ptr。它通常与 std::enable_shared_from_this 一起使用。 ...
面试题:平时开发 C++ 程序处理错误是使用 try-catch 还是错误码方式?
在 C++ 开发中,处理错误的方式主要有两种:异常处理(try-catch) 和 错误码(Error Code)。选择哪种方式取决于具体的应用场景和需求。以下是两种方式的对比以及适用场景: 1. ...
面试题:C++ 的有栈协程和无栈协程有什么区别?
在 C++ 中,协程(Coroutine)是一种轻量级的并发编程工具,可以分为有栈协程(Stackful Coroutine)和无栈协程(Stackless Coroutine)。它们的主要区别在于栈的管理方式和实现机制。 1. 有栈...
面试题:C++ 什么场景下用继承?什么场景下使用组合?
在C++中,继承和组合是两种不同的代码复用方式,适用于不同的场景。 1. 继承的使用场景 继承用于表示“is-a”关系,即子类是父类的一种特殊类型。继承适合以下场景: 代码复用:当多个类有共同...
面试题:C++ QT 中信号和槽的原理是什么?
在 C++ 的 Qt 框架中,信号(Signal)和槽(Slot) 是一种用于对象间通信的机制,它是 Qt 的核心特性之一。信号和槽的原理基于 观察者模式,通过松耦合的方式实现对象之间的交互。 1....