排序
面试题:C++ 中为什么要引入 make_shared?它有什么优点?
std::make_shared 是 C++11 引入的一个工具函数,用于创建并返回一个 std::shared_ptr,它封装了动态内存分配和 std::shared_ptr 的构造过程。 引入 std::make_shared 的主要目的是为了提...
面试题:C++ 什么场景下需要用到移动构造函数和移动赋值运算符?
在 C++ 中,移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment Operator)是 C++11 引入的重要特性,用于优化资源管理,特别是在涉及动态内存分配或昂贵资源(如文件句柄、网...
面试题:C++ 中为什么要使用 nullptr 而不是 NULL?
在C++中,nullptr 是C++11引入的关键字,用于表示空指针。与传统的 NULL 相比,nullptr 具有以下优势: 1. 类型安全 NULL 的问题: 在C++中,NULL 通常被定义为 0...
面试题:C++ 中 thread 的 join 和 detach 的区别?
在 C++ 中,std::thread 提供了两种管理线程生命周期的方式:join() 和 detach()。它们的核心区别在于线程的执行与主线程的关系以及资源的释放方式。 1. join() 功能: 阻...
面试题:C++ 中 jthread 和 thread 的区别?
在 C++20 中引入了 std::jthread,它是 std::thread 的增强版本,主要区别在于 std::jthread 提供了更安全和更方便的线程管理功能,特别是自动线程回收和协作中断支持...
面试题: C++ 中 explicit 的作用?
在 C++ 中,explicit 是一个用于修饰构造函数或转换运算符的关键字,它的作用是禁止隐式类型转换,防止编译器自动执行不期望的转换,从而提高代码的安全性和可读性。 1. 用于构造函数 当 explic...
面试题:C++ 的 async 使用时有哪些注意事项?
在 C++ 中,std::async 是一个用于异步执行任务的工具,它封装了线程创建和任务调度的细节,使得异步编程更加简单。然而,使用 std::async 时需要注意一些关键问题,以避免潜在...
面试题:C++ 的 function、bind、lambda 都在什么场景下会用到?
在C++中,function、bind和lambda是用于处理函数对象和回调的强大工具,各自有不同的应用场景。 1. std::function std::function 是一个通用的函数包装器,可以存储、复制和调用任何可调用对象...
面试题:什么是 C++ 中的 auto 和 decltype?
auto 和 decltype 是 C++11 引入的两个关键字,用于简化代码和提高代码的可读性。它们的主要作用是自动推导变量的类型,但它们的用途和行为有所不同。
面试题:C++ 中 enum 和 enum class 的区别?
在 C++ 中,enum 和 enum class 都用于定义枚举类型,但它们有显著的区别,主要体现在作用域、类型安全和隐式转换方面。 1. 作用域(Scope) enum(传统枚举): 枚举值是暴露在枚举类型所在的...