排序
面试题:如何理解 C++ 中的 atomic?
在 C++ 中,std::atomic 是一个模板类,用于实现原子操作。原子操作是不可分割的操作,即在多线程环境中,一个线程执行原子操作时,不会被其他线程中断。std::atomic 提供了一种高效...
面试题:用过哪些 C++ 日志框架?都有什么优缺点?
在 C++ 开发中,日志框架是记录程序运行状态、调试信息和错误信息的重要工具。以下是几种常见的 C++ 日志框架及其优缺点: 1. spdlog 优点: 高性能:spdlog 是一个非常快速的日志库,专为高性...
面试题:C++ 中 malloc 申请的内存,可以用 delete 释放吗?
在 C++ 中,malloc 申请的内存不可以用 delete 释放,反之亦然。malloc 和 delete 是两种不同的内存管理机制,它们的行为和实现方式有本质区别。 为什么不能混用...
面试题:如何解决 C++ 中条件变量的信号丢失和虚假唤醒问题?
在 C++ 中,条件变量(std::condition_variable)是多线程编程中常用的同步机制,用于线程间的通信。然而,使用条件变量时可能会遇到 信号丢失 和 虚假唤醒 的问题。以下是...
面试题:C++ new操作的背后都经历了什么?
在C++中,new操作符用于动态分配内存并构造对象。它的背后经历了一系列步骤,包括内存分配、对象构造以及可能的异常处理。以下是new操作的详细过程: 1. 内存分配 new操作符首先调用operator ne...
面试题:C++ 的 async 使用时有哪些注意事项?
在 C++ 中,std::async 是一个用于异步执行任务的工具,它封装了线程创建和任务调度的细节,使得异步编程更加简单。然而,使用 std::async 时需要注意一些关键问题,以避免潜在...
面试题:用过哪些 C++ 数据库框架?都有什么优缺点?
在 C++ 开发中,数据库框架是连接和操作数据库的重要工具。以下是几种常见的 C++ 数据库框架及其优缺点: 1. ODBC (Open Database Connectivity) 优点: 跨平台:支持多种数据库(如 MySQL、Pos...
面试题:C++ 中为什么 new[] 和 delete[] 一定要配对使用?
在 C++ 中,new[] 和 delete[] 必须配对使用,因为它们的行为与 new 和 delete 有本质区别。混用 new[] 和 delete 或 new ...
面试题:C++ QT 中信号和槽的原理是什么?
在 C++ 的 Qt 框架中,信号(Signal)和槽(Slot) 是一种用于对象间通信的机制,它是 Qt 的核心特性之一。信号和槽的原理基于 观察者模式,通过松耦合的方式实现对象之间的交互。 1....
面试题:C++ 成员变量的初始化顺序是固定的吗?
是的,C++ 中成员变量的初始化顺序是固定的,并且与成员变量在类定义中的声明顺序一致,而不是与构造函数初始化列表中的顺序一致。这是C++语言的一个明确规定,了解这一点对于避免潜在的初始化...