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

设计者人才网官网西安关键词seo

设计者人才网官网,西安关键词seo,做的网站显示不了背景图片,手机h5案例 网站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 不必指向相同的地址。 而是创建新对象并将它的地址赋值给 pBoost.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_ptr<person> p(new person(31)); oa << p; 
} void load() 
{ boost::archive::text_iarchive ia(ss); boost::scoped_ptr<person> 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::cout<<&p<<std::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.hpp>const int ARRAY_SIZE = 3;class SomeType {
public:SomeType() : value(0) {}SomeType(int val) : value(val) {}int getValue() const { return value; }// 添加序列化函数template <class Archive>void 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 Archive>void 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.mmbaike.com/news/69653.html

相关文章:

  • 响应式网站和非响应式网站的区别女教师遭网课入侵直播录屏曝光i
  • 河池网站制作公司关键词大全
  • 邳州哪家做百度推广网站百度网站制作联系方式
  • 网站制作套餐常用的网络推广方法有
  • 响应网站和模板网站有哪些百度怎么发布自己的信息
  • 芜湖网站制作网站在线推广
  • 哪个网站可以做效果图网络app推广是什么工作
  • 楼盘网站建设如何免费推广网站
  • 石家庄市做网站可以访问境外的浏览器
  • 网站返利程序自助建站官网
  • 哪个网站可以做任务赚钱的排行榜123网
  • 网站 设计 电商百度公司官网招聘
  • 百度有哪些网站可免费做软件推广保健品的营销及推广方案
  • 企业网站备案提供什么资料优化网络推广外包
  • 邯郸企业网站建设seo排名点击软件推荐
  • 百度广告联盟官网入口网站搭建谷歌seo
  • 东莞门户网站建设如何建造一个网站
  • 网站备案查询工信部管理系统google chrome官网
  • 品牌网站建设 意义如何搭建个人网站
  • 应聘工作哪个网站比较好小程序生成平台系统
  • 太原做网站的鸣蝉公司百度产品推广怎么收费
  • 做网站需要哪些人手广告联盟官网入口
  • 网站文章优化福州今日头条新闻
  • 网站建设哪家好 思创网络最新收录查询
  • 网络网站建设10大指标sem是什么工作
  • 有什么平台可以推广信息网站优化的关键词
  • 开发游戏需要多少资金青海seo关键词排名优化工具
  • 一元云购手机网站建设软件开发公司排名
  • 济南百度公司做网站吗厦门seo总部电话
  • 大型地方门户网站源码郑州有没有厉害的seo