/********************************************************************
##File: duotai.cpp
@@Created: Sep 29th 2009
$$Author: Freeking
%%Description: 关于C++多态的的实现
***********************************************************************/
#include <iostream>
using namespace std;
class CObject
{
public:
virtual void Serialize() { cout << "CObject::Serialize() /n/n"; }
};
class CDocument : public CObject
{
public:
int m_data1;
void func(){ cout << "CDocument::func()" << endl;
Serialize();
}
void Serialize() { cout << "CDocument::Serialize() /n/n"; }
};
class CMyDoc : public CDocument
{
public:
int m_data2;
void Serialize() { cout << "CMyDoc::Serialize() /n/n"; }
};
//---------------------------------------------------------------
int main()
{
CMyDoc mydoc;
CMyDoc* pmydoc = new CMyDoc;
cout << "#1 testing" << endl;
mydoc.func();
cout << "#2 testing" << endl;
((CDocument*)(&mydoc))->func();
cout << "#3 testing" << endl;
pmydoc->func();
cout << "#4 testing" << endl;
//mydoc 对象会被切割,只剩下CDocument得内容
((CDocument)mydoc).func();
return 0;
}