小作业3-运算符重载

1. (简答题) 编程题(运算符重载)。设计一个复数类,要求对其构造函数进行重载,并重载运算符+号,以便用于计算两个复数类对象的相加,再写一个类型转换函数,将复数类对象转化为一个复数实部的数值,再参与简单数值计算。

#include <iostream>

using namespace std;

class Complex{
    double a;  //实部
    double b;  //虚部

public:
    double getA() const {
        return a;
    }

    void setA(double a) {
        Complex::a = a;
    }

    double getB() const {
        return b;
    }

    void setB(double b) {
        Complex::b = b;
    }

public:
    /*重载运算符'+'*/
    Complex operator+(Complex x){
        Complex ans(*this);
        ans.a += x.a;
        ans.b += x.b;
        return ans;
    }

    /*类型转换函数*/
    operator double(){
        return this->a;
    }

    /*打印复数*/
    static void printComplex(Complex x){
        if (x.a == 0){
            cout<<x.b<<"i"<<endl;
        }
        else if (x.b == 0){
            cout<<x.a<<endl;
        }
        else{
            cout<<x.a<<"+"<<x.b<<"i"<<endl;
        }
    }
};

int main()
{
    return 0;
}

2. (简答题) 编程题(类对象的转换)。编写一个学生类和教师类信息输入/输出程序。学生类数据包括学号、姓名、班级、成绩;教师类数据包括编号、姓名、职称和部门。要求设计一个person类,作为学生类student和教师类teacher的基类,再写一个转换构造函数,可以把学生类对象转换为教师类对象,最后定义一个学生类对象和教师类对象。

#include <iostream>

using namespace std;

/**
 * Person基类
 */
class Person{
    string name;    //姓名

public:
    const string &getName() const {
        return name;
    }

    void setName(const string &name) {
        Person::name = name;
    }
};

/**
 * 学生类
 */
class Student : public Person{
    string schoolNum;   //学号
    string classNum;    //班级
    int score;  //成绩

public:
    const string &getSchoolNum() const {
        return schoolNum;
    }

    void setSchoolNum(const string &schoolNum) {
        Student::schoolNum = schoolNum;
    }

    const string &getClassNum() const {
        return classNum;
    }

    void setClassNum(const string &classNum) {
        Student::classNum = classNum;
    }

    int getScore() const {
        return score;
    }

    void setScore(int score) {
        Student::score = score;
    }


};

/**
 * 教师类
 */
class Teacher : public Person{
    string teacherNum;  //教师编号
    string title;   //职称
    string department;  //部门

public:
    const string &getTeacherNum() const {
        return teacherNum;
    }

    void setTeacherNum(const string &teacherNum) {
        Teacher::teacherNum = teacherNum;
    }

    const string &getTitle() const {
        return title;
    }

    void setTitle(const string &title) {
        Teacher::title = title;
    }

    const string &getDepartment() const {
        return department;
    }

    void setDepartment(const string &department) {
        Teacher::department = department;
    }

    /*转换构造函数*/
    Teacher(Student student,string teacherNum,string title,string department){
        Teacher::setName(student.getName());
        Teacher::setTeacherNum(teacherNum);
        Teacher::setTitle(title);
        Teacher::setDepartment(department);
    }

    Teacher(){}
};

int main() {
    system("chcp 65001");
    //定义一个学生类对象
    Student x;
    x.setName("赵玥萱");
    x.setClassNum("计科2班");
    x.setSchoolNum("21408000xxx");
    x.setScore(100);
    //定义一个教师类对象
    Teacher y;
    y.setName("周美彤");
    y.setDepartment("数学教学组");
    y.setTitle("教授");
    y.setTeacherNum("001");

    return 0;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值