代码如下:
#include <iostream>
#include <string>
using namespace std;
class Student
{
protected:
int math;
int english;
char name[20];
public:
Student(const char*p,int m,int e)
{
memset(name,0,20);
memcpy(name,p,strlen(p)>20?20:strlen(p));
math = m;
english = e;
}
virtual void sum()
{
int total = math + english;
cout << name << "的总成绩:" << total << endl;
}
};
class Machanics :public Student
{
protected:
int machinedesign;
public:
Machanics(const char* p,int m,int e,int machine):Student(p,m,e)
{
machinedesign = machine;
}
virtual void sum()
{
int total = math + english + machinedesign;
cout << name << "的总成绩:" << total << endl;
}
};
class Software:public Student
{
protected:
int programming;
public:
Software(const char* p,int m,int e,int pro):Student(p,m,e)
{
programming = pro;
}
virtual void sum()
{
int total = math + english + programming;
cout << name << "的总成绩:" << total << endl;
}
};
class DoubleDegree :public Machanics, public Software
{
private:
int thesis;
public:
DoubleDegree(const char* p,int m,int e,int mac,int pro,int th):Machanics(p,m,e,mac),Software(p,m,e,pro)
{
programming = pro;
thesis = th;
}
virtual void sum()
{
int total = Student::math + Student::english + machinedesign + programming + thesis;
cout << Student::name << "的总成绩:" << total << endl;
}
};
int main()
{
Student* Stud1 = new Machanics("wang",90,88,70);
Student* Stud2 = (Student*)(Machanics*)new DoubleDegree("zhang",92,89,90,96,89);
Stud1->sum();
Stud2->sum();
return 0;
}
用这个试试。
#include <iostream>
#include <string>
using namespace std;
class Student
{
protected:
int math;
int english;
char name[20];
public:
Student(const char*p,int m,int e)
{
memset(name,0,20);
memcpy(name,p,strlen(p)>20?20:strlen(p));
math = m;
english = e;
}
virtual void sum()
{
int total = math + english;
cout << name << "的总成绩:" << total << endl;
}
};
class Machanics :virtual public Student
{
protected:
int machinedesign;
public:
Machanics(const char* p,int m,int e,int machine):Student(p,m,e)
{
machinedesign = machine;
}
virtual void sum()
{
int total = math + english + machinedesign;
cout << name << "的总成绩:" << total << endl;
}
};
class Software:virtual public Student
{
protected:
int programming;
public:
Software(const char* p,int m,int e,int pro):Student(p,m,e)
{
programming = pro;
}
virtual void sum()
{
int total = math + english + programming;
cout << name << "的总成绩:" << total << endl;
}
};
class DoubleDegree :public Machanics, public Software
{
private:
int thesis;
public:
DoubleDegree(const char* p,int m,int e,int mac,int pro,int th):Student(p,m,e),Machanics(p,m,e,mac),Software(p,m,e,pro)
{
programming = pro;
thesis = th;
}
virtual void sum()
{
int total = math + english + machinedesign + programming + thesis;
cout << Student::name << "的总成绩:" << total << endl;
}
};
int main()
{
Student* Stud1 = new Machanics("wang",90,88,70);
Student* Stud2 = (Student*)(Machanics*)new DoubleDegree("zhang",92,89,90,96,89);
Stud1->sum();
Stud2->sum();
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632