C++ 基础面试题共66篇

面试题:C++ 中为什么要使用 nullptr 而不是 NULL?

在C++中,nullptr 是C++11引入的关键字,用于表示空指针。与传统的 NULL 相比,nullptr 具有以下优势: 1. 类型安全 NULL 的问题: 在C++中,NULL 通常被定义为 0...
程序百科的头像-程序百科程序百科37天前
0345

面试题:C++ 中构造函数可以是虚函数吗?

在 C++ 中,构造函数不能是虚函数。这是由 C++ 的语言设计和对象构造机制决定的。以下是详细原因和解释: 1. 为什么构造函数不能是虚函数? (1)对象构造的顺序 在 C++ 中,对象的构造是从基类...
程序百科的头像-程序百科程序百科37天前
0307

面试题:C++ 中 jthread 和 thread 的区别?

在 C++20 中引入了 std::jthread,它是 std::thread 的增强版本,主要区别在于 std::jthread 提供了更安全和更方便的线程管理功能,特别是自动线程回收和协作中断支持...
程序百科的头像-程序百科程序百科37天前
03210

面试题:C++ 中数组和指针的区别?

在 C++ 中,数组和指针是两个密切相关的概念,但它们有着本质的区别。以下是它们的详细对比: 1. 定义 数组: 数组是一个连续的内存块,用于存储相同类型的多个元素。 数组的大小在编译时...
程序百科的头像-程序百科程序百科37天前
03014

面试题:C++ 中 new 和 malloc 的区别?delete 和 free 的区别?

在 C++ 中,new/delete 和 malloc/free 都用于动态内存管理,但它们有显著的区别: 1. new 和 malloc 的区别 语言: new 是 C++ 的运算符。 malloc 是 C ...
程序百科的头像-程序百科程序百科37天前
05410

面试题:什么是 C++ 的左值和右值?有什么区别?

在 C++ 中,左值(Lvalue)和右值(Rvalue)是表达式的两种基本分类,它们的主要区别在于值类别(Value Category)和生命周期。理解左值和右值是掌握 C++ 中移动语义、完美转发等高级特性的基础...
程序百科的头像-程序百科程序百科37天前
02815

面试题:什么是 C++ 的回调函数?为什么需要回调函数?

在C++中,回调函数(Callback Function) 是一种通过函数指针、函数对象(如 std::function)或 Lambda 表达式传递给其他函数的机制,允许在特定事件或条件发生时调用该函数。回调函...
程序百科的头像-程序百科程序百科37天前
05214

面试题:C++ 中虚函数的原理?

在 C++ 中,虚函数(Virtual Function)是实现运行时多态(Runtime Polymorphism)的关键机制。它允许在基类中声明一个函数,并在派生类中重写该函数,从而通过基类指针或引用调用派生类的实现...
程序百科的头像-程序百科程序百科37天前
02511

面试题:C++ 中 thread 的 join 和 detach 的区别?

在 C++ 中,std::thread 提供了两种管理线程生命周期的方式:join() 和 detach()。它们的核心区别在于线程的执行与主线程的关系以及资源的释放方式。 1. join() 功能: 阻...
程序百科的头像-程序百科程序百科37天前
0347

面试题:C++ 中 inline 的作用?它有什么优缺点?

在 C++ 中,inline 是一个关键字,用于建议编译器将函数内联展开,以减少函数调用的开销。它的主要作用是优化性能,但也有一些限制和注意事项。 1. inline 的作用 内联展开:inl...
程序百科的头像-程序百科程序百科37天前
0465