#ifndef __CDT_H__
#define __CDT_H__
#include<iostream>
using namespace std;
class CMyBase
{
public:
CMyBase(){cout << "父类begin create" << endl; foo();this->foo();}
virtual ~CMyBase(){cout << "父类begin delete" << endl;}
virtual void foo()
{
cout << "父类foo" << endl;
}
CMyBase* clone()
{
cout << "父类clone" << endl;
return new CMyBase();
}
};
class CMyDerived:public CMyBase
{
public:
CMyDerived(){cout << "子类begin create" << endl;}
~CMyDerived(){cout << "子类begin delete" << endl;}
void foo()
{
cout << "子类foo" << endl;
}
CMyDerived* clone()
{
cout << "子类clone" << endl;
return new CMyDerived();
}
};
#endif
int main()
{
int ret = 0 ;
CMyBase* pb1 = new CMyDerived;
pb1->foo();
CMyBase* pb2 = pb1->clone();
cout << endl;
pb2->foo();
delete pb1;
delete pb2;
return ret ;
}
int main()
{
int ret = 0 ;
CMyBase* pb1 = new CMyDerived;
pb1->foo();
cout << endl;cout << endl;cout << endl;
CMyBase* pb2 = pb1->clone();
cout << endl;
pb2->foo();
cout << endl;cout << endl;cout << endl;
delete pb1;
delete pb2;
return ret ;
}
int main()
{
int ret = 0 ;
CMyBase* pb1 = new CMyDerived;
pb1->foo();
cout << endl;cout << endl;cout << endl;
CMyBase* pb2 = pb1->clone();
cout << endl;
pb2->foo();
cout << endl;cout << endl;cout << endl;
delete pb1;
delete pb2;
return ret ;
}
int main()
{
int ret = 0 ;
CMyDerived* pb1 = new CMyDerived;
pb1->foo();
cout << endl;cout << endl;cout << endl;
CMyBase* pb2 = pb1->clone();
cout << endl;
pb2->foo();
cout << endl;cout << endl;cout << endl;
delete pb1;
delete pb2;
return ret ;
}