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

淘宝 网站建设 发货网上订货发货网站建设

淘宝 网站建设 发货,网上订货发货网站建设,单页淘宝客网站2014年行吗,贵阳网站建设方舟网络Boost.Serialization 还能序列化指针和引用。 由于指针存储对象的地址#xff0c;序列化对象的地址没有什么意义#xff0c;而是在序列化指针和引用时#xff0c;对象的引用被自动地序列化。 代码 #include boost/archive/text_oarchive.hpp #include boost/…Boost.Serialization 还能序列化指针和引用。 由于指针存储对象的地址序列化对象的地址没有什么意义而是在序列化指针和引用时对象的引用被自动地序列化。 代码 #include boost/archive/text_oarchive.hpp #include boost/archive/text_iarchive.hpp #include iostream #include sstream std::stringstream ss; class person { public: person() { } person(int age) : age_(age) { } int age() const { return age_; } private: friend class boost::serialization::access; template typename Archive void serialize(Archive ar, const unsigned int version) { ar age_; } int age_; }; void save() { boost::archive::text_oarchive oa(ss); person *p new person(31); oa p; std::cout std::hex p std::endl; delete p; } void load() { boost::archive::text_iarchive ia(ss); person *p; ia p; std::cout std::hex p std::endl; std::cout p-age() std::endl; delete p; } int main() { save(); load(); } 结果 0x1ff7bd0 0x1ff7830 1f上面的应用程序创建了一个新的 person 类型的对象使用 new 创建并赋值给指针 p 。 是指针 - 而不是 *p - 被序列化了。Boost.Serialization 自动地通过 p 的引用序列化对象本身而不是对象的地址。 如果归档被恢复 p 不必指向相同的地址。 而是创建新对象并将它的地址赋值给 p 。 Boost.Serialization 只保证对象和之前序列化的对象相同而不是地址相同。 由于新式的 C 在动态分配内存有关的地方使用 智能指针 (smart pointers) Boost.Serialization 对此也提供了相应的支持。 #include boost/archive/text_oarchive.hpp #include boost/archive/text_iarchive.hpp #include boost/serialization/scoped_ptr.hpp #include boost/scoped_ptr.hpp #include iostream #include sstream std::stringstream ss; class person { public: person() { } person(int age) : age_(age) { } int age() const { return age_; } private: friend class boost::serialization::access; template typename Archive void serialize(Archive ar, const unsigned int version) { ar age_; } int age_; }; void save() { boost::archive::text_oarchive oa(ss); boost::scoped_ptrperson p(new person(31)); oa p; } void load() { boost::archive::text_iarchive ia(ss); boost::scoped_ptrperson p; ia p; std::cout p-age() std::endl; } int main() { save(); load(); } 例子中使用了智能指针 boost::scoped_ptr 来管理动态分配的 person 类型的对象。 为了序列化这样的指针必须包含 boost/serialization/scoped_ptr.hpp 头文件。 在使用 boost::shared_ptr 类型的智能指针的时候需要序列化那么必须包含 boost/serialization/shared_ptr.hpp 头文件。 下面的应用程序使用引用替代了指针。 #include boost/archive/text_oarchive.hpp #include boost/archive/text_iarchive.hpp #include iostream #include sstream std::stringstream ss; class person { public: person() { } person(int age) : age_(age) { } int age() const { return age_; } private: friend class boost::serialization::access; template typename Archive void serialize(Archive ar, const unsigned int version) { ar age_; } int age_; }; void save() { boost::archive::text_oarchive oa(ss); person p(31); person pp p; std::coutpstd::endl;oa pp; } void load() { boost::archive::text_iarchive ia(ss); person p; person pp p; ia pp; std::cout p pp.age() std::endl; } int main() { save(); load(); 输出结果 0x7ffc362e9360 0x7ffc362e9360 31指针数组 #include iostream #include fstream #include string #include boost/archive/text_oarchive.hpp #include boost/archive/text_iarchive.hpp #include boost/serialization/vector.hppconst int ARRAY_SIZE 3;class SomeType { public:SomeType() : value(0) {}SomeType(int val) : value(val) {}int getValue() const { return value; }// 添加序列化函数template class Archivevoid serialize(Archive ar, const unsigned int version) {ar value;}private:int value; };class MyClass {friend class boost::serialization::access;public:MyClass() default;int data;SomeType* pointers[ARRAY_SIZE];template class Archivevoid serialize(Archive ar, const unsigned int version) {ar data;for (int i 0; i ARRAY_SIZE; i) {ar pointers[i];}} };int main() {MyClass obj;obj.data 42;for (int i 0; i ARRAY_SIZE; i) {obj.pointers[i] new SomeType(i * 10);}{std::ofstream file(my_class_data.txt);boost::archive::text_oarchive oa(file);oa obj;}for (int i 0; i ARRAY_SIZE; i) {delete obj.pointers[i];}MyClass loadedObj;{std::ifstream file(my_class_data.txt);boost::archive::text_iarchive ia(file);ia loadedObj;}std::cout Loaded Object Data: loadedObj.data std::endl;for (int i 0; i ARRAY_SIZE; i) {std::cout loadedObj.pointers[i]-getValue() std::endl;delete loadedObj.pointers[i];}return 0; }
http://www.w-s-a.com/news/112045/

相关文章:

  • wordpress无法查看站点西安优秀高端网站建设服务商
  • 固始网站制作熟悉免费的网络营销方式
  • 做网站到a5卖站赚钱搜索引擎优化代理
  • 沈阳网站建设包括win10优化
  • 做百度手机网站点击软网站seo优化徐州百度网络
  • 徐州专业网站制作标志设计作业
  • 自己可以做网站空间吗海天建设集团有限公司网站
  • 教学督导网站建设报告aspcms网站图片不显示
  • 网站开发公司成本是什么门户网站宣传方案
  • 上海 企业网站建设网站怎么开通微信支付
  • 饮料网站建设wordpress主题猫
  • 网站建设需要编码不有没有专门的网站做品牌授权的
  • 做爰在线网站免费空间列表
  • 网站外链建设工作总结郑州网站建设扌汉狮网络
  • 建设企业网站的需要多长时间网站使用说明书模板
  • 建网站首页图片哪里找263企业邮箱网页版登录
  • 盐城网站建设电话高端定制网站
  • 成都网站seo技术施工企业样板先行制度
  • 高端网站建设电话河北建筑工程信息网站
  • 亲 怎么给一个网站做备份财务系统有哪些软件
  • wordpress重新手机优化专家下载
  • 怎样把网站做成软件设计工作室怎么接单
  • html网站设计实例代码重庆多个区划定风险区
  • 推广方案设计同一个网站可以同时做竞价和优化
  • 论坛网站开发 go电商扶贫网站建设
  • 个人建站教程优秀的定制网站建设
  • 农村建设集团有限公司网站下载百度极速版
  • 微信公众号个人可以做网站么做企业网站需要哪些
  • 如何用付费音乐做视频网站wordpress如何设置首页
  • 杨凯做网站网站首页 排版