boost序列化补充说明 昨天研究了boost::xml_serialization的序列化的应用部份,特别是在xml_serialization中关于对象序列化的部份还是值得研究一下的,我花了点时间看了看这部份的代码是如何实现的,这里记录一下,做个笔记和朋友们分享 (一)回顾 昨天研究到对象序列化部份可以通过如下的方式做对象的序列化 test* a = NULL; 这时序列化回来的时候就会生成test对象 这个部份的实现是跟踪了一下代码是这样实现的 (二)对象创建的过程 a.首先是从operator >>( test* &a )这个操作符开始 b.然后会调用load_override(test* &a , BPPST_PFTO int ) => basic_xml_iarchive::load_override(test* &a , 0) c.basic_xml_iarchive::load_override(test* &a , 0)这个函数做几件事情,结点开始load_start( "a"/*结点的名字,缺省是变量的名字*/ ),结点结束load_end("a"),另一个就是核心的load函数了 d.archive::load函数做类型匹配后调用invoke(xml_iarchive , a/*是引用*/ ) e.invoke函数做两件主要的事儿,register_type( xml_iarchive , test* &a ) 和 xml_iarchive.load_pointer
到此就完成了xml_serialization的全部的序列化过程......过两天就要回家了,没心情干活了,呵呵,祝各位新年快乐。 |
boost序列化补充说明
最新推荐文章于 2023-09-26 14:10:28 发布