C++ 面向对象 - 类的继承与派生

目录

        公有继承 —— 学生信息类

保护继承 —— 学生信息类

研究生信息类

狼人类



公有继承 —— 学生信息类

编程要求

在右侧编辑器中的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. 学号:1
  2. 姓名:厉宏富
#include "people.h"     // People 类定义在这里面
#include 
#include 

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. 学号:1
  2. 姓名:严宏富
    #include "people.h"     // People 类定义在这里面
    #include 
    #include 
    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 类,并实现他们的成员函数以及一个普通函数,具体要求如下:

  1. Graduate 类

增加一个成员变量研究方向:int ResearchID,以及一个成员函数:void PrintResearchID(),函数用来输出 ResearchID 的值,输出格式为:研究方向:ResearchID

  1. Student 类

补充有成员函数:void PrintSID(),函数输出成员变量 SID 的值,输出格式为:学号:SID

  1. 普通函数:Set(int sid,int rid,string name,Graduate *ptr)函数,它用前三个参数设置 ptr 所指对象的三个成员。

People 基类,它有一个公有成员变量姓名 Name,一个公有成员函数 PrintName(函数的功能是打印出 Name 的值),

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:1 304 厉宏富

预期输出:

  1. 学号:1
  2. 姓名:厉宏富
  3. 研究方向:304
    #include "people.h" //People类定义在这里面
    #include 
    #include 
    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<<"研究方向:"<set(name);
        ptr->SID=sid;
        ptr->ResearchID=rid;
        
        /********* End *********/
    }
    

狼人类

在右侧编辑器中的Begin-End之间补充代码,实现三个类的设计,其中成员变量和成员函数的访问性可自行设置,具体要求如下:

  1. 狼类( Wolf )

    • 成员变量姓名:string Name

    • 成员变量爪子锋利度:int Shape

    • 成员函数:void PrintState(),按照姓名 爪子锋利度格式输出两个成员变量的值。

  2. 人类( Human )

    • 成员变量姓名:string Name

    • 成员变量智力:int Intell

    • 成员函数:void PrintState(),按照姓名 智力格式输出两个成员变量的值。

  3. 狼人类( Werewolf ),它继承狼类和人类

    • 成员函数:void SetName(string name),函数用来设置两个基类的成员变量姓名。

    • 成员函数:void SetState(int shape,int intell),函数用 shape 、intell 两个参数分别设置狼类的爪子锋利度和人类的智力。

    • 成员函数:void PrintAllState(),函数按照狼类,人类的顺序调用两个基类的 PrintState 函数,输出他们的成员变量值。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:10 0 狠人
预期输出:

  1. 姓名:狠人,爪子锋利度为:10
  2. 姓名:狠人,智力为:0
#include 
#include 

using namespace std;

/********* Begin *********/
class Wolf
{
	//狼类成员的声明
	public:
    	string Name;
		int Shape;
		void PrintState();
    
    
};
//狼类成员的定义
void Wolf::PrintState()
{
	cout<< "姓名:"<

你可能感兴趣的:(面向对象,c++,蓝桥杯,开发语言)