排序
面试题:C++ 中如何设计一个线程安全的类?
在C++中设计一个线程安全的类,意味着在多线程环境下,类的成员函数可以被多个线程安全地调用,而不会导致数据竞争或未定义行为。以下是设计线程安全类的一些关键步骤和注意事项: 1. 使用互斥...
面试题:C++ 中 thread 的 join 和 detach 的区别?
在 C++ 中,std::thread 提供了两种管理线程生命周期的方式:join() 和 detach()。它们的核心区别在于线程的执行与主线程的关系以及资源的释放方式。 1. join() 功能: 阻...
面试题: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++ 中友元类和友元函数有什么作用?
在C++中,友元(Friend) 是一种机制,允许某个类或函数访问另一个类的私有(private)和保护(protected)成员。友元分为两种: 友元类(Friend Class) 友元函数(Friend Function) 1.&...
面试题:C++ 中什么是深拷贝?什么是浅拷贝?写一个标准的拷贝构造函数?
在C++中,拷贝是指用一个对象初始化另一个对象。拷贝分为深拷贝(Deep Copy)和浅拷贝(Shallow Copy),它们的区别在于如何处理指针或动态分配的资源。 1. 浅拷贝(Shallow Copy) 定义:...
面试题:C++ 中 struct 和 class 的区别?
在 C++ 中,struct 和 class 都用于定义自定义数据类型,但它们在默认访问权限和继承行为上有一些区别。以下是它们的详细对比: 1. 默认访问权限 struct: 默认的成员访问...
面试题:什么是 C++ 的函数重载?它的优点是什么?和重写有什么区别?
在 C++ 中,函数重载(Function Overloading)是一种允许在同一作用域内定义多个同名函数,但这些函数的参数列表必须不同的特性。通过函数重载,可以使用相同的函数名来实现不同的功能,从而提...
面试题:什么是 C++ 中的虚继承?
在 C++ 中,虚继承(Virtual Inheritance) 是一种解决多重继承中菱形继承问题(Diamond Problem)的机制。它通过确保在继承链中共享同一个基类子对象,避免重复继承导致的二义性和资源浪费。 1...
面试题:C++ 中析构函数一定要是虚函数吗?
在 C++ 中,析构函数是否需要声明为虚函数取决于类的设计用途,特别是是否会被继承以及是否会被基类指针指向派生类对象。以下是详细分析: 1. 什么时候析构函数必须是虚函数? 当满足以下条件时...