#include "stdafx.h"
#include <iostream>
using namespace std;
class CObject
{
public:
virtual void Serialize(){cout<<"CObject::Serialize()\n\n";} //虚函数+基类(可以是不带virtual的派生类作基类)指针,动态绑定
};
class CDocument:public CObject
{
public:
int m_data1;
CDocument(){cout<<"enter into CDocument\n"<<endl;};
~CDocument(){cout<<"enter out CDocument\n";};
void func(){cout<<"CDocument::func()"<<endl;
Serialize();
}
void Serialize(){cout<<"CDocument::Serialize()\n\n";}
};
class CMyDoc:public CDocument
{
public:
int m_data2;
CMyDoc(){cout<<"enter into CMyDoc\n"<<"\n";};
~CMyDoc(){cout<<"enter out CMyDoc\n";};
void Serialize(){cout<<"CMyDoc::Serialize()\n\n";}
};
void main()
{
CMyDoc mydoc;
cout<<"#1 testing"<<endl;
((CDocument*)(&mydoc))->func();
cout<<"#2 testing"<<endl;
((CDocument)mydoc).func(); //临时变量,调用了拷贝构造函数,结束后调用析构函数
(CDocument)mydoc; //临时变量,调用了拷贝构造函数,结束后调用析构函数
#include <iostream>
using namespace std;
class CObject
{
public:
virtual void Serialize(){cout<<"CObject::Serialize()\n\n";} //虚函数+基类(可以是不带virtual的派生类作基类)指针,动态绑定
};
class CDocument:public CObject
{
public:
int m_data1;
CDocument(){cout<<"enter into CDocument\n"<<endl;};
~CDocument(){cout<<"enter out CDocument\n";};
void func(){cout<<"CDocument::func()"<<endl;
Serialize();
}
void Serialize(){cout<<"CDocument::Serialize()\n\n";}
};
class CMyDoc:public CDocument
{
public:
int m_data2;
CMyDoc(){cout<<"enter into CMyDoc\n"<<"\n";};
~CMyDoc(){cout<<"enter out CMyDoc\n";};
void Serialize(){cout<<"CMyDoc::Serialize()\n\n";}
};
void main()
{
CMyDoc mydoc;
cout<<"#1 testing"<<endl;
((CDocument*)(&mydoc))->func();
cout<<"#2 testing"<<endl;
((CDocument)mydoc).func(); //临时变量,调用了拷贝构造函数,结束后调用析构函数
(CDocument)mydoc; //临时变量,调用了拷贝构造函数,结束后调用析构函数
}
输出结果:
enter into CDocument
enter into CMyDoc
#1 testing
CDocument::func()
CMyDoc::Serialize()
#2 testing
CDocument::func()
CDocument::Serialize()
enter out CDocument
enter out CDocument
enter out CMyDoc
enter out CDocument