排序
面试题:请介绍 C++ 多态的实现原理?
C++ 中的多态(Polymorphism)是面向对象编程的核心特性之一,它允许通过基类的指针或引用来调用派生类的重写函数。多态的实现依赖于虚函数(virtual function)和动态绑定(dynamic binding)...
面试题:C++ 如何进行性能优化?
C++ 是一种高性能的编程语言,但在实际开发中,如果不注意代码的实现细节,仍然可能导致性能问题。以下是一些常见的 C++ 性能优化方法,涵盖了从代码设计到具体实现的多个方面。 1. 选择合...
面试题: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++ 中 sizeof 和 strlen 的区别?
在 C++ 中,sizeof 和 strlen 是两个常用的操作符/函数,但它们的作用和用法完全不同。以下是它们的详细区别: 1. sizeof 作用:sizeof 是一个编译时操作符,用于计算数据...
面试题:什么情况下会出现死锁?如何避免死锁?
死锁(Deadlock)是多线程编程中常见的问题,指的是两个或多个线程互相等待对方释放资源,导致所有线程都无法继续执行。以下是死锁的产生条件、示例以及避免死锁的方法。 1. 死锁的产生条...
面试题:指针和引用的区别是什么?
指针和引用是C++中用于间接访问变量的两种机制,尽管它们有相似之处,但在使用和特性上有显著区别。以下是它们的主要区别: 1. 定义与初始化 指针: 指针是一个变量,存储另一个变量的内存...
面试题:什么是 C++ 的移动语义和完美转发?
在 C++ 中,移动语义和完美转发是两个重要的特性,分别用于优化资源管理和实现泛型编程。以下是它们的详细解释: 1. 移动语义(Move Semantics) 什么是移动语义? 移动语义是 C++11 引入...
面试题:什么场景下使用锁?什么场景下使用原子变量?
在 C++ 多线程编程中,锁(如 std::mutex) 和 原子变量(如 std::atomic) 是两种常用的同步机制。它们各有优缺点,适用于不同的场景。以下是它们的对比以及适用场景...
面试题:C++ 中值传递和引用传递的区别?
在 C++ 中,值传递和引用传递是两种不同的参数传递方式,它们在性能、内存使用和语义上有显著区别。以下是它们的详细对比: 1. 值传递(Pass by Value) 定义 值传递是指将实参的值复制一份传递...