题目
实现一个学生类Student。
私有数据成员:
- 姓名name_(char*) [ 采用字符指针的类型,可以通过动态分配空间,适应不同长度的姓名.]
- 性别gender_(枚举类型)(可以先定义枚举类型性别,例如enum Gender{Male, Female},再定义性别变量gender_)
- 学号number_(int)
- 成绩score_(int)
成员函数:
- 无参构造函数和带参数构造函数
- 拷贝构造函数
- 赋值运算符函数
- 析构函数
- 成员函数Display()显示学生的姓名、性别、学号和成绩
分块实现
定义学生类
成员函数
私有数据成员
最后代码
#include <iostream>
#include <cstring>
using namespace std;
using namespace St
class Student{
public:
enum Gender{Male, Female};
friend ostream& operator<<(ostream& os, Gender gender){
if(gender == Male)
os << "Male";
else
os << "Female";
return os;
}
Student(){
}
Student(const char* name, Gender gender, int number, int score){
name_ = new char[strlen(name) + 1];
strcpy(name_, name);
gender_ = gender;
number_ = number;
score_ = score;
}
Display(){
cout << name_ << " " << gender_ << " " << number_ << " " << score_ << "\n";
}
private:
char* name_;
Gender gender_;
int number_;
int score_;
};
int main(){
Student s1;
Student s2("Nicolas ZhaoSi", Student::Male, 20010, 100);
Student s3("Jason GuoDa Statham", Student::Female, 20020, 60);
Student s4(s2);
s1 = s3;
s1.Display();
s2.Display();
s3.Display();
s4.Display();
return 0;
}