C++ 17 已经支持在 if 语句和 switch 语句中使用初始化的语法。
在编程中,我们经常遇到这样的情况,我们可能返回/传递/使用某种类型的对象。也就是说,我们可以有某个类型的值,也可以没有任何值。因此,我们需要一种方法来模拟类似指针的语义,在指针中,我们可以使用nullptr来表示没有值。
std::array是在C++11标准中增加的STL容器,它的设计目的是提供与原生数组类似的功能与性能。
C++11的shared_ptr是如何实现的,大家应该都能答出来引用计数的概念,本文教你手写一个shared_ptr。
inline 函数由 inline 关键字定义,引入 inline 函数的主要原因是用它替代 C 中复杂易错不易维护的宏函数。
在经典的设计模式中,有一种迭代器模式,定义为:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
本文主要介绍C++如何实现运行时期的类型判断,并且较为深入的讨论了具体源码的实现。
C++11支持range-based for循环,这是一个很方便的特性,本文带来范围for的实现原理。
在C语言中空结构体的大小是0,我们貌似可以理解,但为什么到C++中,空类的大小却是1呢?
本文主要介绍C++如何实现类型萃取以及如何禁止函数编译期间根据特定的条件来选择启用或禁用特定的重载,感兴趣的同学一起学习吧。
我将从定义、技术实现、设问形式、实例总结来阐述我对于萃取机制的理解。
泛型编程大家应该都很熟悉了,主要就是利用模板实现“安全的宏”,而模板元编程区别于我们所知道的泛型编程,它是一种较为复杂的模板,属于C++的高阶操作了,它最主要的优点就在于把计算过程提前到编译期,能带来可观的性能提升。接下来,请一起来学习吧。
我们在平时常常会听到有人说traits/萃取等高大上的东西,有时候可能也会对此产生很大的疑问,觉得type tratis很高大上,高深莫测;其实说到底这个东西很简单,总结为一句话就是在运行的时候识别类型(即类型萃取)。
C++20 终于引入了协程特性,给库作者提供了一个实现协程的机制,让用户方便使用协程来编写异步逻辑,降低了异步并发编程的难度。结合我最近协程的学习,在这里记录一下相关内容。
ISO C++ 委员会正式发布了 C++20 标准,命名为 ISO/IEC 14882:2020。
C++11 提供了可变模板参数包,使函数可以接受任意数量的参数。但在 C++11中展开参数包稍显麻烦,而 C++17 的折叠表达式使得展开参数包变得容易,其基本语法是使用 (...) 的语法形式进行展开。
单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。