当前位置: 首页 > wzjs >正文

建设银行网站预约取款房产网签查询

建设银行网站预约取款,房产网签查询,在家做网站或ps挣钱接活,wordpress extended super adminsAny类(C17类型擦除,也称上帝类) 在C中,std::any 是C17标准引入的一个灵活的类型安全容器,用于存储任意类型的单个值。 1. std::any 的核心特性 类型安全:存储的值必须通过明确的类型转换(any_…

Any类(C++17类型擦除,也称上帝类)

在C++中,std::any 是C++17标准引入的一个灵活的类型安全容器,用于存储任意类型的单个值。


1. std::any 的核心特性

  • 类型安全:存储的值必须通过明确的类型转换(any_cast)访问,否则会抛出异常。
  • 值语义any对象管理其内部存储的值的生命周期,拷贝时会深拷贝存储的值。
  • 小对象优化(SOO):大多数实现会在栈上直接存储小对象,避免堆分配的开销。
  • 类型擦除:隐藏具体类型,但保留运行时类型信息(RTTI)。

2. 基本用法

2.1 包含头文件
#include <any>
2.2 存储值
std::any data;data = 42;                     // 存储int
data = std::string("Hello");   // 存储string
data = 3.14;                   // 存储double
2.3 检查是否有值
if (data.has_value()) {std::cout << "Data contains a value.\n";
}
2.4 获取值的类型
const std::type_info& type = data.type();
std::cout << "Type: " << type.name() << "\n";  // 输出类似"i"(int)或"d"(double)
2.5 安全地获取值(any_cast
try {int value = std::any_cast<int>(data);std::cout << "Value: " << value << "\n";
} catch (const std::bad_any_cast& e) {std::cerr << "Wrong type: " << e.what() << "\n";
}
2.6 重置值
data.reset();  // 清空内容

3. 高级用法

3.1 存储复杂对象
struct Point { int x, y; };
std::any pt = Point{10, 20};// 通过指针访问(不抛出异常)
if (auto* p = std::any_cast<Point>(&pt)) {std::cout << "Point: (" << p->x << ", " << p->y << ")\n";
}
3.2 移动语义
std::string str = "Hello";
std::any a = std::move(str);  // 移动构造,str变为空
3.3 自定义类型支持

任何可拷贝构造的类型均可存储:

class MyClass {
public:MyClass(int v) : value(v) {}
private:int value;
};std::any obj = MyClass(42);

4. 与类似技术的对比

特性std::anystd::variantvoid*
类型安全✔️✔️
存储类型数量任意编译时固定任意
类型检查运行时(type()编译时
内存管理自动自动手动
适用场景动态类型需求已知有限类型集合低级操作

5. 实现原理简析

  • 类型擦除:通过内部模板类保存类型信息和值。
  • 小对象优化:栈存储小对象,堆存储大对象。
  • 虚函数分发:使用虚函数处理拷贝、析构和类型查询。

6. 注意事项

  • 性能:频繁的类型检查或大型对象存储可能影响性能。
  • 异常安全:错误的any_cast会抛出std::bad_any_cast
  • 类型一致性:必须精确匹配存储类型(如intlong视为不同)。

7. 实际应用场景

  • 配置系统:存储不同类型的配置参数(如int、string、bool)。
  • 消息传递:在事件总线上传递多种类型的消息。
  • 插件架构:处理来自不同模块的未知数据类型。

8. 示例代码:异构容器

#include <any>
#include <vector>
#include <iostream>int main() {std::vector<std::any> container;container.push_back(42);container.push_back(3.14);container.push_back(std::string("C++17"));for (const auto& elem : container) {if (elem.type() == typeid(int)) {std::cout << "Int: " << std::any_cast<int>(elem) << "\n";} else if (elem.type() == typeid(double)) {std::cout << "Double: " << std::any_cast<double>(elem) << "\n";} else if (elem.type() == typeid(std::string)) {std::cout << "String: " << std::any_cast<std::string>(elem) << "\n";}}return 0;
}

输出

Int: 42
Double: 3.14
String: C++17

9. 总结

std::any为C++提供了灵活的类型安全存储机制,适用于需要运行时处理未知类型的场景。尽管它牺牲了一定的性能(类型检查和存储开销),但在设计动态系统时非常有用。使用时需注意类型匹配和异常处理,避免滥用。


文章转载自:

http://nV26xjRP.mxLwL.cn
http://uEGIJNKo.mxLwL.cn
http://5zbvwsWO.mxLwL.cn
http://WWnunxwa.mxLwL.cn
http://d90EOddB.mxLwL.cn
http://1MUJU2LH.mxLwL.cn
http://ypLMaoK3.mxLwL.cn
http://vcUxPjNl.mxLwL.cn
http://nNxUTPpM.mxLwL.cn
http://k4wr0bZO.mxLwL.cn
http://ufIqXGWg.mxLwL.cn
http://fKm8IKrM.mxLwL.cn
http://aR8URgee.mxLwL.cn
http://yCMcUBzk.mxLwL.cn
http://gqYBgbF8.mxLwL.cn
http://o55yuIuZ.mxLwL.cn
http://kEM9M2aX.mxLwL.cn
http://ZnJSq1FY.mxLwL.cn
http://1fRLwhCv.mxLwL.cn
http://Dq6Bh8Ps.mxLwL.cn
http://4wUEqJD1.mxLwL.cn
http://KFDOxRc3.mxLwL.cn
http://GoljPtx4.mxLwL.cn
http://urCNPOYn.mxLwL.cn
http://4lAV8cHb.mxLwL.cn
http://zwOwxO62.mxLwL.cn
http://qoPjGXbR.mxLwL.cn
http://spSKzl8q.mxLwL.cn
http://MCDMDJBc.mxLwL.cn
http://LQGPXwtE.mxLwL.cn
http://www.dtcms.com/wzjs/651255.html

相关文章:

  • 大型网站建设的难点是什么黑龙江省建设厅网站的电话
  • c 网站开发培训现代感的传媒公司名称
  • 茂名网站建设方案开发ftp 转 wordpress
  • 网站开发培训班 上地网站如何快速免费推广
  • 永康物流网站网络营销推广方式有哪些
  • 中国建设银行曲江支行网站网站制作公司承担
  • 网站从制作到使用的全过程网站开发去哪里找工作
  • 做网站网络合同上海工商局企业信息查询
  • 正规做网站重庆自助企业建站模板
  • 网站搭建前景中国字体设计网官网
  • 上海高端做网站wordpress做出影视网站
  • 做调查问卷网挣钱的网站怎样做校园网站
  • 网站首页模板免费下载深圳正规融资公司
  • 网站建设的项目方案济南建设网站哪里好
  • 专业外贸网站建设 诚信 青岛抖音代运营的好处
  • 个人备案网站百度收录用树莓派做网站服务器速度快吗
  • 什么网站免费做游戏哪个网站做课件ppt比较好
  • 苏州网站制作我的家乡湛江网站设计
  • 成都科技网站建设联如何做信用网站截图
  • 怎么建设空包网站四川省住房与城乡建设厅官方网站
  • 苏州做网站设计的公司有哪些wordpress 自定义头像
  • 手机网站建设如何个人网站公司网站区别经营区别
  • 做品牌网站公司ai设计室内设计
  • 珠宝网站开发wordpress头像加V
  • 将自己做的网站发布到网上成都网站设计最加科技
  • 外贸柒夜网站建设学校网站建设项目可行性分析
  • 本地上海集团网站建设春考网页制作素材
  • 宣城有做网站的公司吗app官网登录入口
  • 查看网站服务器ip无锡公司网站设计
  • 网站备案怎么注销外贸免费网站建设