#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
class A{
public:
A(){_a = 0x00;}
virtual ~A(){}
virtual void printA(){}
virtual A* clone()const{cout<<"cloneA"<<endl;return NULL;}
int _a;
};
class B{
public:
B(){_b = 0x11;}
virtual ~B(){}
virtual void printB(){}
virtual B* clone()const{cout<<"cloneB"<<endl;return NULL;}
int _b;
};
class C:public A, public B{
public:
mutable int dd;
mutable C* m_pCopyC;
C(){
_c = 0x22;
_b=23;
m_pCopyC=NULL;
}
virtual ~C()
{
cout<<this<<" release C"<<endl;
if(NULL!= m_pCopyC)
{
delete m_pCopyC;
m_pCopyC=NULL;
}
}
virtual C* clone()const{
dd=0;
m_pCopyC=new C(*this);
cout<<"cloneC"<<"**##**"<<m_pCopyC<<endl;
return m_pCopyC;
}
int _c;
};
int _tmain(int argc, _TCHAR* argv[])
{
{
A a;
B b;
C c;
B* pb = &c;
A* pA = &c;
cout<<pb<<" **** "<<&c<<" **** "<<pA<<endl;
B* pc = pb->clone();
cout<<&(pc->_b )<<" **** "<<&(c._b)<<endl;
cout<<(pc->_b )<<" **** "<<(c._b)<<endl;
pc->_b=22;c._b=33;
cout<<&(pc->_b )<<" **** "<<&(c._b)<<endl;
cout<<(pc->_b )<<" **** "<<(c._b)<<endl;
cout<<">>*******************<<"<<endl;
cout<<pb<<"****"<<pc<<"****"<<&c<<"****"<<endl;
cout<<">>*******************<<"<<endl;
}
system("pause");
return 0;
}
c++ 多继承
猜你喜欢
转载自blog.csdn.net/wuan584974722/article/details/81479052
今日推荐
周排行