ToB企服应用市场:ToB评测及商务社交产业平台

标题: 泛形variant+visit [打印本页]

作者: 道家人    时间: 2024-5-15 19:57
标题: 泛形variant+visit
泛形variant+visit
1.引言

在python里可以让一个变量变成不同的范例,拥有不同的值,且根据不同的范例执行不同的利用,当不同的范例拥有同样的函数时,如许我们就不用再重复写一堆代码了
但如果在c++中实现类似的功能,比较经典的处理方式是用虚函数 + 子类重写的方式,
  1. class Base{
  2.     virtual void accept(visitor) = 0;
  3. }
  4. class sub1:Base{
  5.     void accept(visitor){
  6.     visitor->visit(this)
  7. }
  8. }
  9. class sub2:Base{
  10. void accept(visitor){
  11.     visitor->visit(this)
  12. }
复制代码
如许的话代码的冗余度就高了,且每次添加新都需要新建一个类
有没有更简单一些的方式呢,接下来的variant+visit能够很好的解决该问题
2. variant

std::variant 是 C++17 标准中引入的一种数据范例,它允许在一个变量中存储多种不同范例的值,这些值被称为“备选项”或“可更换项”。std::variant 本质上是一种范例安全的联合(Union)范例
2.1 特点

2.2 简单示例

[code]#include #include #include int main() {    std::variant v;    v = 10;    std::cout




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4