MFC 序列化的理解及困惑点
MFC 序列化的理解及困惑点
CGraphicDoc类的Serialize函数是序列化的发起者
都会调用
具体对象类的Serialize函数,也就是实现者
如何调用呢?
就是通过 “<<”、“ >>” 运算符
可以这么理解:
//具体类的序列化实现具体的从文件中读参数,从而构造对象
void CGraph::Serialize(CArchive& ar)
{if (ar.IsStoring()){ar << m_nDrawType << m_ptOrigin << m_ptEnd;}else{ar >> m_nDrawType >> m_ptOrigin >> m_ptEnd;}
}
//Doc类的序列化实现抽象的取对象操作,也就是搭个框架,软件自己调用对
应对象的构造函数申请heap空间,我们直接用就行了。。。
void CGraphicDoc::Serialize(CArchive& ar)
{POSITION pos = GetFirstViewPosition();CGraphicView* pView = (CGraphicView*)GetNextView(pos);if (ar.IsStoring()){// TODO: 在此添加存储代码int nCount = pView->m_ObArray.GetSize();ar << nCount;for (int i=0;i<nCount;i++){ar << pView->m_ObArray.GetAt(i);//pView->m_ObArray.GetAt(i) 这东西是个指向对象的指针,<< 运算符自己就调用这个对象的序列化函数了}}else{// TODO: 在此添加加载代码int nCount;ar >> nCount;CGraph* pGraph;for (int i=0;i<nCount;i++){ar >> pGraph;pView->m_ObArray.Add(pGraph);}}
}
我的、大概的、浅显的理解就是,对象的序列化函数在存储时 要实现把构造对象的所有元素都存到文件中,以实现构造一个完整的对象。
那么问题来了:如何存一个文件(一张图片)?
ar<<bufsize; ar.Write(pbuf,bufsize)
MFC 序列化的理解及困惑点相关推荐
- MFC序列化(serial)简单例子
我们保存一些文本内容可以很简单的保存成一个文件就行了.但如果要把一些类对象信息保存起来,然后读取时用那些信息初始化一个类对象就比较复杂了.MFC提供了一个叫序列化的功能.可以把一个对象信息转化成二进制 ...
- [Serializable]序列化一句话理解
所谓序列化,简单说就是将内存中的数据转换成可传输可永久性存储的媒介(类似于I/O) 转载于:https://www.cnblogs.com/daiguagua/articles/3039826.htm ...
- JAVA:说说你对序列化的理解
本文主要内容 背景 在Java语言中,程序运行的时候,会产生很多对象,而对象信息也只是在程序运行的时候才在内存中保持其状态,一旦程序停止,内存释放,对象也就不存在了. 怎么能让对象永久的保存下来呢?- ...
- 理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
按习惯,(0,0)就原点,原点就是(0,0),但是如果用此来理解windows的map mode,就会走弯路.其实,稍微改变一下观念,windows的map mode就比较好理解了.举例说明:page ...
- Python Json序列化与反序列化
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json ...
- 心得---字节流、文件操作、对象序列化
1. 抽象基类InputStream.OutputStream,不能实例化. • InputStream类是基本的输入类.它定 ...
- Mapreduce的序列化和流量统计程序开发
一.Hadoop数据序列化的数据类型 Java数据类型 => Hadoop数据类型 int IntWritable float FloatWritable long LongWritable d ...
- Python中json和pickle模快dumps()、loads()、dump()、load()序列化和反序列化实例
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json ...
- pythonjson序列化_Python Json序列化与反序列化的示例
不同的编程语言有不同的数据类型; 比如说: Python的数据类型有(dict.list.string.int.float.long.bool.None) Java的数据类型有(bool.char.b ...
- 用python实现接口测试(八、实现序列化与反序列化)
前言 在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象. 一.字典,通过json把它序列化为j ...
最新文章
- Windows上通过VLC播放器搭建rtsp流媒体测试地址操作步骤
- 专访图灵奖得主John Hopcroft:中国必须提升本科教育水平,才能在AI领域赶上美国
- 如何使用vue.js 实现前台html页面和后台的数据绑定
- 网站SEO优化的高效手段有哪些?
- 中国在线直播教育行业发展形势与竞争策略研究报告2022-2028年
- 剑桥大学中国学联学术部文章
- php 基础 判断类型
- 聊聊HTTPS和SSL/TLS协议
- 【最近公共祖先】[COCI]STOGOVI
- uniapp怎么调起摄像头拍视频_抖音视频怎么拍?我们总结了10个手机视频拍摄小技巧...
- JavaScript综合项目:博客前端
- 刚过去不到一个月 QQ又更新了
- 润乾报表不显示的分析原因
- 不可不知的 Android strings.xml 那些事
- IDEA 编写JDBC 第一个示例
- Linux下conda镜像源配置
- python-线程互斥锁与递归锁
- Matlab中S-函数的编写
- 小米动态图标+android实现,创新设计动态图标
- 【面试分享】奇安信渗透测试工程师,通过!
热门文章
- python采用面向对象编程模式吗_python基础5-面向对象编程
- linux /home recovering journal,Ubuntu启动之后显示Recovering journal ,clean block。。。。问题`...
- LeetCode:每日一题(2020.4.6)
- FFmpeg学习(10)—— ffmpeg最全的命令参数
- Mybatis 数据库Mysql时间范围内数据查询非常慢的解决办法
- 时间格式 asp.net
- ubuntu18.04安装ros-melodic
- 论文笔记_S2D.39_2015-ICCV-条件随机场作为递归神经网络(CRF-RNN)
- 结构光相移法-多频外差原理+实践(上)
- 小米oj 组长偏头痛(二分)