在大多数应用程序中,有必要将数据序列化,即转换为字节序列。虽然这对于已经由单个内存块组成的数据结构来说很简单,但对于动态结构(如列表、树或图)来说则是一项更复杂的任务。我们的流数据实现遵循了 C++ iostreams 库引入的思想,即使用操作符<< 和>> 来实现序列化过程。与iostream库相比,我们的实现保证数据流的方式可以读回没有任何特殊处理,even when streaming into and from text files ,即流的用户不需要了解用于序列化数据的表示(参考 3.4.1)。
在基本的流类层次结构之上,还可以从类Streamable 派生类并实现强制方法serialize(In*, Out*) 。此外,通过一种机制扩展了流数据的基本概念,以便在序列化数据时收集有关数据结构的信息。这些信息用于在二进制形式的数据和人类可读的格式(反映数据结构的层次结构、变量及其实际值)之间进行转换。
作为序列化的第三层,两个宏允许定义自动实现serialize(In*, Out*) 方法的类。