定义一个学生类,它包含学号(int)、姓名(string)、性别(sex)、分数(float)等数据成员,定义一个对象,重载赋值运算符“=”,使“=”能够实现int、string、float型的数据为该对象赋值;重载运算符“<<”“>>”,使之能够直接输入、输出学生类的对象。
时间: 2024-03-26 21:35:23 浏览: 179
好的,根据你的要求,我为你编写了如下的学生类,并重载了赋值运算符“=”和输入输出运算符“<<”和“>>”:
```c++
#include <iostream>
#include <string>
using namespace std;
enum Sex { Male, Female }; // 定义枚举类型Sex表示性别
class Student {
public:
Student() = default; // 默认构造函数
Student(int num, string name, Sex sex, float score) :
number(num), name(name), sex(sex), score(score) {} // 带参构造函数
// 重载赋值运算符"="
Student& operator=(const int& num) {
number = num;
return *this;
}
Student& operator=(const string& n) {
name = n;
return *this;
}
Student& operator=(const float& s) {
score = s;
return *this;
}
// 重载输入输出运算符">>"和"<<"
friend istream& operator>>(istream& in, Student& s) {
in >> s.number >> s.name >> s.sex >> s.score;
return in;
}
friend ostream& operator<<(ostream& out, const Student& s) {
out << s.number << " " << s.name << " " << s.sex << " " << s.score << endl;
return out;
}
private:
int number;
string name;
Sex sex;
float score;
};
int main() {
Student s;
int num = 1001;
string name = "Tom";
float score = 89.5;
s = num;
s = name;
s = score;
cout << "请输入学生的学号、姓名、性别和分数:" << endl;
cin >> s;
cout << "学生信息如下:" << endl;
cout << s;
return 0;
}
```
在上面的代码中,我们定义了一个类 `Student`,它包含了学号、姓名、性别和分数等数据成员,并定义了一个对象 `s`。在 `Student` 类中,我们重载了赋值运算符“=”和输入输出运算符“<<”和“>>”,使得我们可以通过直接赋值或者输入输出来操作学生类的对象。
在 `main` 函数中,我们首先定义了一个学生对象 `s`,并通过重载的赋值运算符“=”,分别将整型、字符串和浮点型的数据赋值给了该对象。接着,我们通过重载的输入运算符“>>”从标准输入中输入学生的各项信息,并通过重载的输出运算符“<<”将学生的信息输出到标准输出中。
希望这个示例可以帮助你理解如何定义学生类,并重载赋值运算符“=”和输入输出运算符“<<”和“>>”。
阅读全文