目录
公有继承 —— 学生信息类
编程要求
在右侧编辑器中的Begin-End
之间补充代码,设计 Student 类,并实现 Set 和 PrintSID 函数,具体要求如下:
-
Student 类公有成员函数:
void PrintSID()
,函数输出成员变量 SID 的值,输出格式为:学号:SID
。 -
普通函数:
Set(int sid,string name,Student *ptr)
,它用前两个参数设置 ptr 对象的 SID 和 Name(继承 People 拥有的属性)属性值。
现在已有一个基类 People,它有一个公有成员变量姓名 Name,一个公有成员函数 PrintName(函数的功能是打印出 Name 的值)。
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:1 厉宏富
预期输出:
学号:1
姓名:厉宏富
#include "people.h" // People 类定义在这里面
#include <string>
#include <iostream>
using namespace std;
/********** Begin **********/
//公有继承 People
class Student:public People
//class Student
{
public:
int SID;
void PrintSID();
};
/********** End **********/
void Student::PrintSID()
{
/********* Begin *********/
//输出 SID
cout << "学号:" << SID << endl;
/********* End *********/
}
void Set(int sid,string name,Student *ptr)
{
/********* Begin *********/
//给 ptr 对象的两个属性赋值
ptr->SID=sid;
ptr->Name=name;
/********* End *********/
}
保护继承 —— 学生信息类
在右侧编辑器中的Begin-End
之间补充代码,采用保护继承设计学生信息类,并实现 Set 和 PrintSID 函数,具体要求如下:
-
Student 类公有成员函数:
void PrintSID()
,函数输出成员变量 SID 的值,输出格式为:学号:SID
。 -
普通函数:
Set(int sid,string name,Student *ptr)
,它用前两个参数设置 ptr 对象的 SID 和 Name(继承 People 拥有的属性)属性值。
现在已有一个基类 People,它有一个公有成员变量姓名 Name,一个公有成员函数 PrintName(函数的功能是打印出 Name 的值)。
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:1 严宏富
预期输出:
学号:1
姓名:严宏富
#include "people.h" // People 类定义在这里面 #include <string> #include <iostream> using namespace std; /********** Begin **********/ //保护继承 People class Student : protected People { public: int SID; void PrintSID(); //添加一个 Set 函数来设置父类的 Name 成员 friend void Set(int sid,string name,Student *ptr); }; /********* End *********/ void Student::PrintSID() { /********* Begin *********/ //输出学号 SID cout << "学号:" << SID << endl; /********* End *********/ } void Set(int sid,string name,Student *ptr) { /********* Begin *********/ //给 ptr 对象的两个属性赋值 ptr->SID=sid; ptr->Name=name; /********* End *********/ }
研究生信息类
在右侧编辑器中的Begin-End
之间补充代码,设计学生信息类( Student )和设计研究生信息类( Graduate ),Graduate 类公有继承 Student 类,而 Student 类私有继承 People 类,并实现他们的成员函数以及一个普通函数,具体要求如下:
- Graduate 类
增加一个成员变量研究方向:int ResearchID
,以及一个成员函数:void PrintResearchID()
,函数用来输出 ResearchID 的值,输出格式为:研究方向:ResearchID
。
- Student 类
补充有成员函数:void PrintSID()
,函数输出成员变量 SID 的值,输出格式为:学号:SID
。
- 普通函数:
Set(int sid,int rid,string name,Graduate *ptr)
函数,它用前三个参数设置 ptr 所指对象的三个成员。
People 基类,它有一个公有成员变量姓名 Name,一个公有成员函数 PrintName(函数的功能是打印出 Name 的值),
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:1 304 厉宏富
预期输出:
学号:1
姓名:厉宏富
研究方向:304
#include "people.h" //People类定义在这里面 #include <string> #include <iostream> using namespace std; /********* Begin *********/ //私有继承 People 类 class Student:private People { public: int SID; void PrintSID(); //添加一个 Set 函数来设置父类的 Name 成员 void SetName(string name){Name=name;}; }; /********* End *********/ void Student::PrintSID() { /********* Begin *********/ //输出学号 SID cout << "学号:" << SID << endl; /********* End *********/ } /********* Begin *********/ // 公有继承 Student 类 class Graduate:public Student { public: int ResearchID; void PrintResearchID(); //添加一个 Set 函数来设置父类的 SID 成员 friend void Set(string name,int sid,int rid,Graduate *ptr); void set(string name){SetName(name);}; //添加一个 Set 函数来调用父类的 SetName 函数 }; /********* End *********/ void Graduate::PrintResearchID() { /********* Begin *********/ //输出研究方向 ResearchID cout<<"研究方向:"<<ResearchID<<endl; /********* End *********/ } void Set(string name,int sid,int rid,Graduate *ptr) { /********* Begin *********/ //设置 ptr 所指对象的三个成员 ptr->set(name); ptr->SID=sid; ptr->ResearchID=rid; /********* End *********/ }
狼人类
在右侧编辑器中的Begin-End
之间补充代码,实现三个类的设计,其中成员变量和成员函数的访问性可自行设置,具体要求如下:
-
狼类( Wolf )
-
成员变量姓名:
string Name
-
成员变量爪子锋利度:
int Shape
-
成员函数:
void PrintState()
,按照姓名 爪子锋利度
格式输出两个成员变量的值。
-
-
人类( Human )
-
成员变量姓名:
string Name
-
成员变量智力:
int Intell
-
成员函数:
void PrintState()
,按照姓名 智力
格式输出两个成员变量的值。
-
-
狼人类( Werewolf ),它继承狼类和人类
-
成员函数:
void SetName(string name)
,函数用来设置两个基类的成员变量姓名。 -
成员函数:
void SetState(int shape,int intell)
,函数用 shape 、intell 两个参数分别设置狼类的爪子锋利度和人类的智力。 -
成员函数:
void PrintAllState()
,函数按照狼类,人类的顺序调用两个基类的 PrintState 函数,输出他们的成员变量值。
-
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:10 0 狠人
预期输出:
姓名:狠人,爪子锋利度为:10
姓名:狠人,智力为:0
#include <string>
#include <iostream>
using namespace std;
/********* Begin *********/
class Wolf
{
//狼类成员的声明
public:
string Name;
int Shape;
void PrintState();
};
//狼类成员的定义
void Wolf::PrintState()
{
cout<< "姓名:"<<Name<<",爪子锋利度为:"<<Shape<<endl;
}
class Human
{
//人类成员的声明
public:
string Name;
int Intell;
void PrintState();
};
//人类成员的定义
void Human::PrintState()
{
cout<< "姓名:"<<Name<<",智力为:"<<Intell<<endl;
}
// 记得在这里写上要继承的类
class Werewolf:public Wolf,public Human
{
//狼人类成员的声明
public:
void SetName(string name);
void SetState(int shape,int intell);
void PrintAllState();
};
//狼人类成员的定义
void Werewolf::SetName(string name)
{
Wolf::Name=name;
Human::Name=name;
}
void Werewolf::SetState(int shape,int intell)
{
Shape=shape;
Intell=intell;
}
void Werewolf::PrintAllState()
{
Wolf::PrintState();
Human::PrintState();
}
/********* End *********/