排序
面试题:C++ 中 thread 的 join 和 detach 的区别?
在 C++ 中,std::thread 提供了两种管理线程生命周期的方式:join() 和 detach()。它们的核心区别在于线程的执行与主线程的关系以及资源的释放方式。 1. join() 功能: 阻...
面试题:什么是 C++ 的函数重载?它的优点是什么?和重写有什么区别?
在 C++ 中,函数重载(Function Overloading)是一种允许在同一作用域内定义多个同名函数,但这些函数的参数列表必须不同的特性。通过函数重载,可以使用相同的函数名来实现不同的功能,从而提...
面试题:C++ 中可以使用 delete this 吗?
是的,在 C++ 中可以使用 delete this,但需要非常小心,因为它是一种高风险的操作。delete this 的核心思想是对象在成员函数中自我销毁。虽然这种技术在某些特定场景下有用,但必须遵循严格的...
面试题:C++ 中 jthread 和 thread 的区别?
在 C++20 中引入了 std::jthread,它是 std::thread 的增强版本,主要区别在于 std::jthread 提供了更安全和更方便的线程管理功能,特别是自动线程回收和协作中断支持...
面试题:C++ 的栈溢出是什么?
栈溢出(Stack Overflow) 是程序运行时的一种错误,发生在调用栈(Call Stack)的内存空间被耗尽时。栈是用于存储函数调用信息(如局部变量、返回地址等)的内存区域,其大小是有限的。当程序...
面试题:C++ 的 strcpy 和 memcpy 有什么区别?
在C++中,strcpy 和 memcpy 是两个常用的函数,用于复制数据。尽管它们的功能相似,但在使用场景和行为上有显著的区别。 1. strcpy 定义:strcpy 是用于复制字符串的函数...
面试题:C++ 是否可以 include 源文件?
在C++中,可以使用 #include 包含源文件(.cpp 文件),但不推荐这样做。以下是详细解释: 1. 为什么可以包含源文件? #include 是一个预处理指令,它的作用是将指定文件...
面试题: C++ 中 explicit 的作用?
在 C++ 中,explicit 是一个用于修饰构造函数或转换运算符的关键字,它的作用是禁止隐式类型转换,防止编译器自动执行不期望的转换,从而提高代码的安全性和可读性。 1. 用于构造函数 当 explic...
面试题:C++ 中析构函数一定要是虚函数吗?
在 C++ 中,析构函数是否需要声明为虚函数取决于类的设计用途,特别是是否会被继承以及是否会被基类指针指向派生类对象。以下是详细分析: 1. 什么时候析构函数必须是虚函数? 当满足以下条件时...
面试题:C++ 中构造函数可以是虚函数吗?
在 C++ 中,构造函数不能是虚函数。这是由 C++ 的语言设计和对象构造机制决定的。以下是详细原因和解释: 1. 为什么构造函数不能是虚函数? (1)对象构造的顺序 在 C++ 中,对象的构造是从基类...