导入
简介
让我们来看看本章你将学到的内容!
为什么要使用 std::variant
C++17 提供的另一个实用包装类型是 std::variant。它是一种类型安全的联合体(union)——你可以存储不同类型的值,并且保证对象的生命周期正确。与传统的 C 风格联合体相比,这种新类型具有显著优势。你可以在其中存储各种类型的数据,无论是简单的 int 或 float,还是复杂的结构如 std::vector<std::string>。在所有情况下,对象都能被正确地初始化和清理。
重要的是,这种类型极大地增强了设计模式的实现。例如,现在你可以更轻松地对无关的类型层次结构使用访问者模式、模式匹配以及运行时多态。
本章将学习的内容
-
联合体可能引发的问题。
-
区分联合体(discriminated unions)的概念,以及为何需要联合体的类型安全性。
-
std::variant的工作原理及其功能。 -
对
std::variant的操作方法。 -
性能开销与内存需求。
-
实际应用场景示例
前往下一课,开始学习基础知识。