新建一个CPerson类 #include <afx.h> class CPerson : public CObject { DECLARE_SERIAL(CPerson) public: CPerson(void); CPerson(CString name, int age, bool gender = true); CString getName(); CString getWords(); void setWords(CString words); int getAge(); bool isMale(); void say(); void say(CString msg); virtual void Serialize(CArchive& ar); virtual ~CPerson(void); private: CString m_name; int m_age; bool m_gender; CString m_words; }; //实现文件 #include "StdAfx.h" #include "Person.h" CPerson::CPerson(void) { m_name = _T("谁"); m_age = 2; m_gender = true; } CPerson::CPerson(CString name, int age, bool gender) { m_name = name; m_age = age; m_gender = gender; } CString CPerson::getName() { return m_name; } CString CPerson::getWords() { return m_words; } void CPerson::setWords(CString words) { m_words = words; } int CPerson::getAge() { return m_age; } bool CPerson::isMale() { return m_gender; } void CPerson::say() { say(m_words); } void CPerson::say(CString msg) { _tprintf(_T("%s说: %s/r/n"), m_name, m_words); } void CPerson::Serialize(CArchive& ar) { if (ar.IsStoring()) { ar << this->m_name << this->m_age << this->m_gender << this->m_words; } else { ar >> this->m_name >> this->m_age >> this->m_gender >> this->m_words; } } CPerson::~CPerson(void) { } IMPLEMENT_SERIAL(CPerson, CObject, 1) 测试程序,在main()中创建2个CPerson对象,然后将其持久化到.archive文件中,再将其反持久化出来 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { setlocale(LC_ALL, "chs"); //创建两个待写入的对象 CPerson chain(_T("钱恩"), 25, true); chain.setWords(_T("快到吃午饭的时间了……")); CPerson who; who.setWords(_T("我是谁?")); CFile file(_T("persons.archive"), CFile::modeCreate | CFile::modeWrite); CArchive ar(&file, CArchive::store); //序列化进入 ar << &chain << &who; ar.Close(); file.Close(); CFile Rfile(_T("persons.archive"), CFile::modeRead); CArchive Rar(&Rfile, CArchive::load); CPerson *p1, *p2; //序列化出来 Rar >> p1 >> p2; p1->say(); p2->say(); delete p1; delete p2; return 0; }