延吉到绍兴火车时刻表:一个C++问题希望高手帮我指点指点

来源:百度文库 编辑:高校问答 时间:2024/05/05 18:57:54
分析下面程序的运行结果
#include "iostream.h"
#include "string.h"
class Base
{ public:
virtual char *fun()const=0;
};
char *Base::fun()const { return "Base";}
class Derived11:virtual public Base
{ public:
char *fun()const{return "Derived11";}
};
class Derived12:virtual public Base
{ public:
char *fun()const{return "Derived12";}
};
class Derived2:public Derived11,public Derived12
{ public:
char *fun()const
{char *ptr;
ptr=new char[strlen(Derived11::fun())+strlen(Derived12::fun())+1];
strcpy(ptr,Derived11::fun());
strcat(ptr,Derived12::fun());
return ptr;
}
};
void main()
{Base *pb;
pb=new Derived11;
cout<<pb->fun()<<endl;
pb=new Derived12;
cout<<pb->fun()<<endl;
pb=new Derived2;
cout<<pb->fun()<<endl;
}
这个程序我看不太懂,主要就是抽象类和扶植兼容规则, ptr=new char[strlen(Derived11::fun())+strlen(Derived12::fun())+1]; 还请高手帮我解决解决帮我分析分析这个程序

Derived11
Derived12
Derived11Derived12

Derived11,Derived12继承基类BASE
Derived2继承Derived11,Derived11
BASE

Derived11 Derived12
Derived2