c++ std::Any 用法小结

2026-07-07 30083 代码

本文演示了C++17中std::any的用法测试,示例代码展示了std::any可以存储多种类型值,通过any_cast进行类型安全的值提取,下面就来详细的介绍一下,感兴趣的可以了解一下

据说std::Any能存任意值,测试下:

Test1.h:

#pragma once

void testAny(void);

Test1.cpp:

#include "Test1.h"
#include 
#include 
#include 

void testAny(void) {
    std::any a = 9527;
    std::cout << "a: " << *(std::any_cast(&a)) << std::endl;  // 这里转化为指针再解引用
    int b = std::any_cast(a); // 直接值传递
    std::cout << "b: " << b << std::endl;
    std::any c = std::string("日月之行,若出其中;星汉灿烂,若出其里。");
    a = '\n';
    a = c;
    auto p = std::any_cast(&a); // 为了取值,做类型转化, p是指针. 如果类型不匹配转化失败, p为nullptr
    std::cout << "a: " << *p << std::endl;

    if (a.has_value()) {
        std::cout << "a 类型: " <<  a.type().name() << std::endl;
    }

    a.reset();

    if (a.has_value()) {
        std::cout << "a 有值 "<< std::endl;
    } else {
        std::cout << "a 没有值了,释放了。 "<< std::endl;
    }

}

运行:

ok. 据说any不能存引用类型,其他都可以存。

到此这篇关于c++ std::Any 用法小结的文章就介绍到这了,更多相关c++ std::Any内容请搜索就爱读以前的文章或继续浏览下面的相关文章希望大家以后多多支持就爱读!

您可能感兴趣的文章:

  • C++ std::any的模拟实现
  • C++17之std::any的具体使用

SQL中的CASE WHEN用法实例详解

SQL中的CASE WHEN是核心条件表达式,功能类似编程中的 if-else 或 switch,用于在查询中实现逻辑判断、数据分类及动态计算,本文介绍SQL中的CASE WHEN用法,感兴趣的朋友一起看看吧 目录一、简单CASEWHEN函数:二、CASEWHEN条件表达式函数三、常用场景场景1:不同状态展示为不同的值场景2:统计不同状态下的值场景3:配合聚合函数做统计场景4:CASEWHEN中使...

MySQL DML 操作(CRUD)总结

本文全面讲解 MySQL 核心的 CRUD 增删改查操作,是数据库入门必备教程,结合实战案例详解 INSERT 插入、SELECT 查询、UPDATE 修改、DELETE 删除四大核心语句,下面就来详细的介绍一下 目录一、前言:什么是CRUD二、数据新增:INSERT(Create)2.1基础语法2.2分类实战案例2.2.1全列插入(不指定字段)2.2.2指定列插入(推荐用法)2.2.3插入冲突处...

MySQL中REPLACE函数的用法与实战案例详解

本文详细解析了MySQL中的REPLACE函数,包括其基础语法、核心特性及常见使用场景,REPLACE函数通过全局匹配方式替换字符串内容,适合处理固定文本清理任务,感兴趣的小伙伴可以了解下 目录一、前言二、函数基础语法三、基础使用示例四、业务实战:接口日志提取URL参数五、REPLACE与SUBSTR性能深度对比(重点)六、高频踩坑总结七、拓展:REPLACE的两种使用场景八、REPLACE适用场...

MySQL性能调优面试复习小结之Explain、索引、慢查询、缓存和架构优化

这篇文章主要介绍了MySQL性能调优面试复习之Explain、索引、慢查询、缓存和架构优化的相关资料,文中通过代码从问题执行计划定位问题开始,到索引优化、SQL优化、分页优化、表结构优化、缓存和架构优化等多个方面,需要的朋友可以参考下 目录前言一、先用EXPLAIN定位问题1.possible_keys和key的区别2.key_len看联合索引用得深不深3.rows看扫描量大不大二、重点看type...

Linux中网络管理器用法速查手册

本文详细介绍了Linux系统中多种网络管理工具的使用方法,包括ifconfig、NetworkManager和netplan等工具,帮助用户轻松配置网卡参数参数 目录前言1、ip/ifconfig2、ifcfg3、ifupdown4、NetworkManager5、systemd-networkd6、netplan7、杂项前言 在Windows系统中配置网卡的IP等参数非常的方便,但在Linux命...

Linux中包管理器(DEB包、RPM包和通用包)用法速查手册

本文详细介绍了Linux、Windows及Python等常见包管理器的特用法,涵盖apt、dpkg、yum、dn用户要求描述的内容需要更加精简,并突出核心关键词 目录前言1、Linux类1.1、DEB包1.2、RPM包1.3、通用包2、Windows类2.1、scoop2.2、winget2.3、choco3、Python类3.1、pip3.2、pipx3.3、conda3.4、uv4、Node....

MySQL 中 UNION 的用法详解

本文详细介绍了MySQL中UNION的基本用法及常见场景,包括去重与不重复、列数与数据类型兼容、结果排序等内容,感兴趣的可以了解一下 目录一、UNION是什么?二、UNION默认会去重三、UNIONALL不会去重四、UNION的使用要求1.每个SELECT查询的列数必须相同2.对应列的数据类型应该兼容3.最终结果的列名取第一个SELECT的列名五、UNION中的ORDERBY和LIMIT六、UNI...

MySQL EXPLAIN 字段使用小结

EXPLAIN 是 MySQL 提供的查询执行计划分析工具,执行结果包含 12 个核心字段,下面就来详细的介绍一下EXPLAIN 字段使用小结,感兴趣的可以了解一下 目录一、执行顺序相关字段select_type取值详解二、索引与访问方式(⭐核心重点)🔥type访问类型(从最优到最差)📐key_len计算规则三、Extra额外信息(⭐性能"晴雨表")四、实战分析示例五、一句话总结优先级EXPLAI...