侯捷的MFC中:
第2章C++ 的重要性質
#0001 #include <iostream.h>
#0002
#0003 class CObject
#0004 {
#0005 public:
#0006 virtual void Serialize() { cout << "CObject::Serialize() \n\n"; }
#0007 };
#0008
#0009 class CDocument : public CObject
#0010 {
#0011 public:
#0012 int m_data1;
#0013 void func() { cout << "CDocument::func()" << endl;
#0014  Serialize();
#0015  }
#0016
#0017 virtual void Serialize() { cout << "CDocument::Serialize() \n\n"; }
#0018 };
#0019
#0020 class CMyDoc : public CDocument
#0021 {
#0022 public:
#0023 int m_data2;
#0024 virtual void Serialize() { cout << "CMyDoc::Serialize() \n\n"; }
#0025 };
#0026 //---------------------------------------------------------------
#0027 void main()
#0028 {
#0029 CMyDoc mydoc;
#0030 CMyDoc* pmydoc = new CMyDoc;
#0031
#0032 cout << "#1 testing" << endl;
#0033 mydoc.func();
#0034
#0035 cout << "#2 testing" << endl;
#0036 ((CDocument*)(&mydoc))->func();
#0037
#0038 cout << "#3 testing" << endl;
#0039 pmydoc->func();
#0040
#0041 cout << "#4 testing" << endl;
#0042 ((CDocument)mydoc).func();
#0043 }
运行结果为#1 testing
CDocument::func()
CMyDoc::Serialize()
#2 testing
CDocument::func()
CMyDoc::Serialize()
#3 testing
CDocument::func()
CMyDoc::Serialize()
#4 testing
CDocument::func()
CDocument::Serialize() <-- 注意为什么((CDocument*)(&mydoc))->func();和((Cdocument)mydoc).func();不一样?
谢谢!