关于class继承的问题,为什么第一个base和第二个based的结果不一样?

#include
#include
class base{ char name[15]; //定义基类base,
public:
base(char* m="王五"){strcpy(name,m);}
void show(){cout<<"base输出: "<<name<<endl;}
};
class base1: virtual public base{ //定义派生类base1,base为虚基类
public: base1(char* m): base(m){ }
};
class base2: virtual public base{ //定义派生类base1,base为虚基类
public: base2(char*m): base(m){ }
};
class derive: virtual public base1,public base2 //定义派生类的derive,多继承
{ char name[15];
public:
derive(char*,char*,char*,char*);
derive(char*,char*,char*);
void showD(){ cout<<"derive输出: "<<name<<endl;}
};
derive::derive(char* p,char* q,char* r,char t): base(p),base1(q),base2(r) { strcpy(name,t);}
derive::derive(char
p,char* q,char* r): base1(p),base2(q){ strcpy(name,r);}
void main()
{derive d("赵易","钱耳","孙伞","李思");
d.show();
d.showD();
derive c("赵易","钱耳","孙伞");
c.show();
c.showD();
base1 b("周武");
b.show();
}
运行结果为:
base 输出:赵易
derive 输出:李思
base 输出:王五
derive 输出:孙伞
base 输出:周武

写的好乱,别人没心思看了。。。建议稍微排版些

代码太乱了,但是大概明白你的意思,建议看看C++的特性之一:多态(很重要的)