字体
第(1/5)页
关灯
   存书签 书架管理 返回目录
    CArchive 类的chā入运算符(<<)和提取运算符(>>)对许多C++固有的数据类型进行了

    重载,可以直接使用。例如在上面的程序中要对int 的成员变量m_nType 进行串行化,即可

    直接使用chā入运算符和提取运算符。下面列出一些被CArchive 类默认支持的数据类型:

    ? BYTE:8 位无符号整数。

    ? WORD:16 位无符号整数。

    ? LONG:32 位带符号整数。

    ? DWORD:32 位无符号整数。

    ? float:单精度浮点数。

    ? double:双精度浮点数。

    ? int:32 位带符号整数。

    ? short:16 位带符号整数。

    ? char:8 位字符类型。

    ? unsigned:32 位无符号整数。

    (2)CString 和CRect 等类型

    CString 和CRect 等类型,虽然不是从CObject 派生的类,但是它们有自己针对CArchive

    类的重载chā入运算符和提取运算符,因此也可以直接使用这两个运算符进行串行化。

    (3)自定义的类

    如果序列化的类中包含其他自定义的内嵌对象,则需要处理后再进行串xìng化。例如在

    CSampleData 类中添加如下的新数据成员:

    public:

    CSampleChildData m_data;

    将CSampleData 类串行化时,需要对CSampleChildData 进行额外的处理。首先使得

    CSampleChildData 继承CObject,然后编写它自己的Serialize()成员函数。这时CSampleData

    类的Serialize()函数可以进行如下修改以实现对m_data 的串行化:

    void CSampleData::Serialize(CArchive& ar)

    {

    CObject::Serialize(ar); //进行基类的序列化

    if (ar.IsStoring()) {

    ar << m_strNcom << m_nType; //保存数据

    }

    else {

    ar >> m_strNcom >> m_nType; //读取数据

    }

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·180·

    m_Data.Serialize(ar); //串行化m_Data

    }

    如果CSampleData 类中的CSampleChildData 对象是通过指针在堆中创建的,则代码如下:

    public:

    CSampleChildData *m_pData;

    将CSampleData 类串行化更为简单。首先需要为CSampleChildData 添加串行化代码,即

    继承CObject,并添加相应的宏和构造函数,最后编写CSampleChildData 自己的Serialize()

    函数。完成对CSampleChildD
上一章 目录 下一页