完美转发是C++中的一种技术,允许函数将参数完美地转发给其他函数,保留其值类别(如左值或右值)。它通常通过std::forward实现,确保在转发时不会丢失任何信息。
在 C 和 C++ 中,void 类型和 sizeof 运算符是每位程序员都应掌握的基本概念。然而,sizeof(void) 的概念可能会让人感到困惑,特别是对于这些语言的新手来说。本文将解释 void 是什么,为什么 sizeof(void) 在传统意义上没有意义,以及这些概念在实际编程中的应用。
在查阅某个问题的时候,突然看到了关于各个操作的性能损耗,今天就借助这篇文章,聊聊我们印象中性能很差的虚函数~~。
有个面试环节,经常问的一个问题就是std::string能否被继承,一开始可能是技术问题,后面多了,就被玩成了梗,不过梗归梗,今天借助这篇文章,聊聊继承相关的Mordern新特性--override和final。
浅谈 std 命名空间,在 Qualified Name Lookup 一节的子节 Namespace Member Lookup 已经介绍,名称前面以 `::` 修饰表示在全局作用域下查找。
Empty Base Optimization(简称EBO),就是当一个类的对象理想内存占用可以为0的时候,把这个类的对象作为另一个类的成员时,把其内存占用变为0的一种优化方法。
POD,即Plain Old Data的缩写,plain代表普通,Old代表旧,从字面意思看是老的、普通的数据类型。这个概念由C++引入主要是为了与C兼容,或者说POD就是与C兼容的那边部分数据类型。
invoke是C++17标准引入的一个函数模板,用来调用可调用对象(Callable Object,如函数指针、函数对象、成员函数指针等)并返回结果。
以前一直有了解C++20的新特性,但是因为编译器对此支持的比较少,所以很少实践。
本文详细解析extern "C"的底层原理与实际应用。
从C++17开始,在编写C++代码时就可以在头文件中定义inline变量。
C++ 17 已经支持在 if 语句和 switch 语句中使用初始化的语法。
在编程中,我们经常遇到这样的情况,我们可能返回/传递/使用某种类型的对象。也就是说,我们可以有某个类型的值,也可以没有任何值。因此,我们需要一种方法来模拟类似指针的语义,在指针中,我们可以使用nullptr来表示没有值。
std::array是在C++11标准中增加的STL容器,它的设计目的是提供与原生数组类似的功能与性能。
C++11的shared_ptr是如何实现的,大家应该都能答出来引用计数的概念,本文教你手写一个shared_ptr。
inline 函数由 inline 关键字定义,引入 inline 函数的主要原因是用它替代 C 中复杂易错不易维护的宏函数。