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

外贸响应式网站建设域名怎么创建网站吗

外贸响应式网站建设,域名怎么创建网站吗,一套vi设计大概多少钱,北京网站建设兼职序列化和反序列化 实现思路#xff1a; 序列化#xff1a;将对象的状态信息转换为可以存储或传输的格式#xff0c;通常是字节流。 确定要序列化的对象的数据成员。将这些数据成员按照一定的规则#xff08;如二进制、文本、JSON、XML 等#xff09;编码为字节序列。将生…序列化和反序列化 实现思路 序列化将对象的状态信息转换为可以存储或传输的格式通常是字节流。 确定要序列化的对象的数据成员。将这些数据成员按照一定的规则如二进制、文本、JSON、XML 等编码为字节序列。将生成的字节序列存储到文件或发送到网络。反序列化将字节流恢复为对象的状态信息。 从文件或网络接收字节序列。按照序列化时使用的规则解码字节序列。根据解码后的数据成员创建或更新对象。 #include iostream #include fstream #include stringclass SerializableObject { private:int data1;double data2;std::string data3;public:SerializableObject(int d1 0, double d2 0.0, const std::string d3 ) : data1(d1), data2(d2), data3(d3) {}// 序列化函数void serialize(const std::string filename) const {std::ofstream file(filename, std::ios::binary);if (file.is_open()) {// 写入数据成员file.write(reinterpret_castconst char*(data1), sizeof(data1));file.write(reinterpret_castconst char*(data2), sizeof(data2));// 先写入字符串长度size_t len data3.length();file.write(reinterpret_castconst char*(len), sizeof(len));// 再写入字符串内容file.write(data3.c_str(), len);file.close();} else {std::cerr Failed to open file for serialization. std::endl;}}// 反序列化函数void deserialize(const std::string filename) {std::ifstream file(filename, std::ios::binary);if (file.is_open()) {// 读取数据成员file.read(reinterpret_castchar*(data1), sizeof(data1));file.read(reinterpret_castchar*(data2), sizeof(data2));// 先读取字符串长度size_t len;file.read(reinterpret_castchar*(len), sizeof(len));// 再读取字符串内容data3.resize(len);file.read(data3[0], len);file.close();} else {std::cerr Failed to open file for deserialization. std::endl;}}void display() const {std::cout data1: data1 , data2: data2 , data3: data3 std::endl;} };int main() {SerializableObject obj(42, 3.14, Hello, World!);std::string filename object.bin;// 序列化obj.serialize(filename);std::cout Serialized object: std::endl;obj.display();SerializableObject newObj;// 反序列化newObj.deserialize(filename);std::cout Deserialized object: std::endl;newObj.display();return 0; } 代码解释 SerializableObject 类包含三个数据成员data1整数、data2双精度浮点数和 data3字符串。serialize 函数 使用 std::ofstream 以二进制模式打开文件。对于 data1 和 data2使用 file.write 将它们的二进制表示写入文件。对于 data3先写入字符串的长度再写入字符串的内容。deserialize 函数 使用 std::ifstream 以二进制模式打开文件。对于 data1 和 data2使用 file.read 读取它们的二进制表示。对于 data3先读取字符串的长度再读取字符串的内容。display 函数打印对象的数据成员。 如何处理对象的生命周期管理 实现思路 构造函数用于对象的初始化可进行资源分配和成员初始化。析构函数用于对象销毁时释放资源如释放动态分配的内存、关闭文件等。拷贝构造函数和拷贝赋值运算符控制对象的拷贝行为避免浅拷贝导致的资源问题。移动构造函数和移动赋值运算符实现对象资源的高效移动避免不必要的拷贝。 #include iostream #include string #include utilityclass ResourceManagingObject { private:int* data;size_t size;public:// 构造函数ResourceManagingObject(size_t s 0) : size(s) {if (s 0) {data new int[s];for (size_t i 0; i s; i) {data[i] i;}} else {data nullptr;}}// 析构函数~ResourceManagingObject() {delete[] data;}// 拷贝构造函数ResourceManagingObject(const ResourceManagingObject other) : size(other.size) {if (other.data) {data new int[size];for (size_t i 0; i size; i) {data[i] other.data[i];}} else {data nullptr;}}// 拷贝赋值运算符ResourceManagingObject operator(const ResourceManagingObject other) {if (this other) return *this;delete[] data;size other.size;if (other.data) {data new int[size];for (size_t i 0; i size; i) {data[i] other.data[i];}} else {data nullptr;}return *this;}// 移动构造函数ResourceManagingObject(ResourceManagingObject other) noexcept : data(other.data), size(other.size) {other.data nullptr;other.size 0;}// 移动赋值运算符ResourceManagingObject operator(ResourceManagingObject other) noexcept {if (this other) return *this;delete[] data;data other.data;size other.size;other.data nullptr;other.size 0;return *this;}void display() const {if (data) {for (size_t i 0; i size; i) {std::cout data[i] ;}std::cout std::endl;} else {std::cout No data. std::endl;}} };int main() {ResourceManagingObject obj1(5);std::cout Original object: ;obj1.display();// 拷贝构造ResourceManagingObject obj2 obj1;std::cout Copied object: ;obj2.display();// 移动构造ResourceManagingObject obj3 std::move(obj1);std::cout Moved object: ;obj3.display();std::cout Original object after move: ;obj1.display();return 0; } 代码解释 ResourceManagingObject 类管理一个动态分配的整数数组。构造函数根据大小分配内存并初始化数组元素。析构函数释放动态分配的内存。拷贝构造函数和拷贝赋值运算符深拷贝资源避免浅拷贝导致的资源共享和潜在的内存问题。移动构造函数和移动赋值运算符将资源从源对象移动到目标对象源对象放弃资源所有权。
http://www.w-s-a.com/news/782732/

相关文章:

  • 网站建设项目管理基本要求网站空间到期影响
  • 做奖杯的企业网站谁有推荐的网址
  • wordpress能做企业站吗wordpress收发邮件
  • 电子产品网站建设策划方案腾讯企业邮箱注册申请免费
  • 哪些网站可以免费做代码自己电脑做网站服务器广域网访问
  • 高端网站设计青海省教育厅门户网站学籍查询
  • 长春网站优化公司网站制作400哪家好
  • 县级门户网站建设的报告开发游戏的软件有哪些
  • 做电子商务的网站wordpress带会员中心
  • 网站域名不变网站可以从做吗网站建设步骤 文档
  • 网站建设中 gif互联网新项目在哪里找
  • 做外包网站猎头公司英文
  • 房屋结构自建设计 网站海淀教育互动平台
  • 网络营销比赛 营销型网站策划热门搜索关键词
  • 网站建设图片代码网络设计师工资
  • 福建网站开发适合交换友情链接的是
  • 企业门户网站建站内乡微网站开发
  • 在线做logo印章网站一般到哪个网站找数据库
  • 哪些网站做免费送东西的广告6郑州人流医院哪家好
  • 高端做网站哪家好sem技术培训
  • 网站做等保是按照什么定级别的做网站的资源哪里找
  • 免费建站网页无需登陆潍坊高端模板建站
  • 北京php网站建设软通动力外包值得去吗
  • 优酷 做视频网站还能成功吗光谷做网站推广哪家好
  • 培训学校网站建设方案网站开发方案设计
  • 网站开发分支结构外贸网站做推广
  • 海南省城乡建设厅网站首页济南网站建设百家号
  • wordpress 图片命名吗北京seo优化哪家公司好
  • 国税网站页面申报撤销怎么做网站空间如何买
  • 简单的购物网站模板跨境建站平台