======================================================
serialize
、save
和 load
的方法签名都使用无符号整数版本作为最后一个参数。这些数字有什么用?随着时间变化,类的内部变量名称可能发生变化,添加新的字段或移除已有字段,等等。这是软件开发过程中的自然进程,除了归档文件仍然保存着关于数据类型原有状态的信息。为了规避这个问题,需要使用版本号。
我们举一个 date
类的例子。
假设您在 date
类中引入一个名为 m_tag
、类型为 string
的字段。该类以前的版本以版本 0 的形式在归档文件中转储,如下 所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE boost_serialization> <boost_serialization signature="serialization::archive" version="9"> <d class_id="0" tracking_level="0" version="0"> <d.m_day>15</d.m_day> <d.m_month>8</d.m_month> <d.m_year>1947</d.m_year> </d> </boost_serialization>
那么,下面的内容显示了该类的 load
方法(您可能已经使用了serialize
,但这里使用 load
提供了更清晰的实现)。