Logo
Section 1 / 22

简介

让我们来看看本章你将学到的内容!

导入

简介

让我们来看看本章你将学到的内容!

为什么要使用 std::variant

C++17 提供的另一个实用包装类型是 std::variant。它是一种类型安全的联合体(union)——你可以存储不同类型的值,并且保证对象的生命周期正确。与传统的 C 风格联合体相比,这种新类型具有显著优势。你可以在其中存储各种类型的数据,无论是简单的 int 或 float,还是复杂的结构如 std::vector<std::string>。在所有情况下,对象都能被正确地初始化和清理。

重要的是,这种类型极大地增强了设计模式的实现。例如,现在你可以更轻松地对无关的类型层次结构使用访问者模式、模式匹配以及运行时多态。

本章将学习的内容

  • 联合体可能引发的问题。

  • 区分联合体(discriminated unions)的概念,以及为何需要联合体的类型安全性。

  • std::variant 的工作原理及其功能。

  • 对 std::variant 的操作方法。

  • 性能开销与内存需求。

  • 实际应用场景示例


前往下一课,开始学习基础知识。

std::optional

基础内容