排序
面试题:C++ 中 jthread 和 thread 的区别?
在 C++20 中引入了 std::jthread,它是 std::thread 的增强版本,主要区别在于 std::jthread 提供了更安全和更方便的线程管理功能,特别是自动线程回收和协作中断支持...
面试题:C++ 中 lock_guard 和 unique_lock 的区别?
在 C++ 中,std::lock_guard 和 std::unique_lock 都是用于管理互斥锁(std::mutex)的 RAII 包装器,它们的主要目的是确保锁在作用域结束时自动释放,从而避免死锁或资源泄漏。...
面试题:请介绍 C++ 中 weak_ptr 的原理?
std::weak_ptr 是 C++ 标准库中的一种智能指针,用于解决 std::shared_ptr 的循环引用问题。它本身不拥有对象的所有权,而是通过观察 std::shared_ptr 来访问资源。理...
面试题:请介绍 C++ 中 unique_ptr 的原理?
std::unique_ptr 是 C++11 引入的一种智能指针,用于管理动态分配的对象生命周期。 它的核心特点是独占所有权(exclusive ownership),即同一时间只能有一个 std::unique_ptr 指向某个对象...
面试题:C++ 中为什么要引入 make_shared?它有什么优点?
std::make_shared 是 C++11 引入的一个工具函数,用于创建并返回一个 std::shared_ptr,它封装了动态内存分配和 std::shared_ptr 的构造过程。 引入 std::make_shared 的主要目的是为了提...
面试题:C++11 中有哪些常用的新特性?
C++11 是 C++ 语言的一次重大更新,引入了许多新特性,极大地提升了代码的简洁性、安全性和性能。 以下是 C++11 中常用的新特性: 1. 自动类型推导(auto) 作用:编译器自动推导变量的类型。 ...
面试题:C++ 中类定义中 delete 关键字和 default 关键字的作用?
在 C++ 中,delete 和 default 是两个用于控制类成员函数行为的关键字。它们通常用于显式地管理类的特殊成员函数(如构造函数、析构函数、拷贝构造函数、赋值运算符等)的生成和使用。 1. delet...
面试题:请介绍 C++ 中 shared_ptr 的原理?shared_ptr 线程安全吗?
std::shared_ptr 是 C++ 标准库中的一种智能指针,用于管理动态分配的对象生命周期。它通过引用计数机制实现多个 std::shared_ptr 共享对象的所有权。理解 std::shared_ptr...
面试题: C++ 中 explicit 的作用?
在 C++ 中,explicit 是一个用于修饰构造函数或转换运算符的关键字,它的作用是禁止隐式类型转换,防止编译器自动执行不期望的转换,从而提高代码的安全性和可读性。 1. 用于构造函数 当 explic...
面试题:什么是 C++ 的列表初始化?
在 C++ 中,列表初始化(List Initialization)是一种用于初始化变量、对象或容器的语法,使用花括号 {} 来提供初始值。它是 C++11 引入的特性,旨在提供更统一、更安全的初始化方式...