people为基类,student和graduate为子类,重载“==”运算符

Posted duanqibo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了people为基类,student和graduate为子类,重载“==”运算符相关的知识,希望对你有一定的参考价值。

 //people为基类,student和graduate为子类,重载“==”运算符

//输入2个学生的信息:姓名、编号、身份证号、班级、专业

//输入1个研究生的信息:姓名、编号、身份证号、班级、专业、导师

//重载“==”,当两个学生的编号相同时,调用重载运算符,输出错误信息

源代码如下:

#include <iostream>
#include <string>
using namespace std;
//定义基类
class People

public:
//成员变量:姓名,编号,身份证号
  string name;
  string number;
  string id_number;

public:
  People() //无参数的构造函数
  People(string name1,string number1,string id_number1)
  name = name1;
  number = number1;
  id_number = id_number1;

//声明input,,output,类外定义
void input();
void output();
;
//定义基类的成员函数input()
void People:: input()


  //输入姓名,编号,身份证号
  cin >> name;
  cin >> number;
  cin >> id_number;

//定义基类的成员函数output()
void People:: output()


  //输出姓名,编号,身份证号
  cout << " name : " << name;
  cout << " number : " << number;
  cout << " id_number : " << id_number;

//子类student
class Student:public People


  //成员变量班级,专业
public:
  string Class;
  string major;
public:
  Student()
  Student(string name1,string number1,string id_number1,string Class1,string major1):People(name1,number1,id_number1)
  Class = Class1;
  major = major1;

void input();

void output();
bool operator ==(const Student &);

;
//子类的成员函数中,调用基类的成员函数input()
void Student::input()


  People::input();
  //输入班级专业
  cin>>Class>>major;

void Student::output()


  People::output();
  //输出班级专业
  cout << " Class : "<< Class;
  cout << " major : "<< major<<endl;


//运算符“==”重载
bool Student::operator ==(const Student &s)

  if(number ==s.number)

  
    cout<<"两个学生编号相同,不合法!";
    exit(1);
  

  else

  
    return 1;
  

//子类Graduate(研究生)
class Graduate:public Student


public:
  string daoshi;
public:
  Graduate()
  Graduate(string name1,string number1,string id_number1,string Class1,string major1,string daoshi1):Student(name1,number1,id_number1,Class1,major1)
  
    daoshi = daoshi1;
  
  void input();
  void output();
;

void Graduate::input()


  Student::input();
  cin >>daoshi;

void Graduate::output()


  Student::output();
  cout<<" daoshi : "<<daoshi<<endl;

int main()

  Student s1;
  Student s2;
  Graduate g;
  cout<<" please input the student info : "<<endl;
  s1.input();
  cout<<" please input the student info : "<<endl;
  s2.input();
  s1==s2; //调用“==”重载,判断两个学生的编号是否相同
  cout<<" please input the graduate info: "<<endl;
  g.input();
  cout<<" please show the students info:"<<endl;
  s1.output();
  s2.output();
  cout<<" show the graduate info: "<<endl;
  g.output();
  return 1;

 

运行结果: 

技术图片

 

以上是关于people为基类,student和graduate为子类,重载“==”运算符的主要内容,如果未能解决你的问题,请参考以下文章

继承,派生,组合

将子类转换为基类?

如何将此“命令处理程序映射”从派生类重构为基类?

泛型和强制转换 - 不能将继承的类强制转换为基类

C ++:将void *转换为基类指针时访问冲突

接口:大学里的学生(Student)需要交学费,而研究生(Graduate)作为学生比较特殊,除了需要交学费外。。。