c++ std::Any 用法

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

Test1.h:

cpp 复制代码
#pragma once

void testAny(void);

Test1.cpp:

cpp 复制代码
#include "Test1.h"
#include <any>
#include <string>
#include <iostream>

void testAny(void) {
    std::any a = 9527;
    std::cout << "a: " << *(std::any_cast<int>(&a)) << std::endl;  // 这里转化为指针再解引用
    int b = std::any_cast<int>(a); // 直接值传递
    std::cout << "b: " << b << std::endl;
    std::any c = std::string("日月之行,若出其中;星汉灿烂,若出其里。");
    a = '\n';
    a = c;
    auto p = std::any_cast<std::string>(&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不能存引用类型,其他都可以存。

相关推荐
黑马程序员毕设22 分钟前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
1-1=02 小时前
C# 委托与事件
开发语言·c#
Fuyo_11192 小时前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
w_zero_one3 小时前
递归算法(一)
java·开发语言·算法
Julien20044 小时前
管理机密(一)
运维·服务器·开发语言·学习方法
Chen_harmony4 小时前
七、STL与string类
开发语言·c++
沐晓时光4 小时前
C语言入门,字符串和字符串函数知识讲解
c语言·开发语言
xxxiugou1234 小时前
C++命名空间与引用全解析
开发语言·c++
用户7624117567055 小时前
第十五章 人工智能基础
c++
yangmu32036 小时前
编程语言发展简史:从机器指令到智能协作
开发语言