C++求助,感谢大佬们

 

代码如下:

#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