一、要求
设计一个学生类,学生的基本信息有学号、姓名、年龄、性别和班级职务(班长、学习委员、团支书和学生)等,通过增加构造函数,使对象在定义时能够对其数据成员进行初始化。其中,性别的默认值为“男”,班级职务默认为“学生”。具体要求如下:
设计构造函数,完成对对象数据成员的初始化。其中,数据成员初始化采用成员初始化列表
设计一个加分函数,针对学生的班级职务进行加分。如果是普通学生不加分,班长加5分,学习委员加3分,团支书加2分
设计输出函数,输出的基本信息,以及该生应该加的分数。
二、分析
数据成员使用成员初始化列表,所以使用构造函数,在构造函数中利用this指针对每一个参数赋值。addscore()函数利用if判断对学生的班级职务加分,之后调用show()函数输出学生信息
三、代码
💻提示:所有实验源码已在github整理
#include <iostream> using namespace std; #include <string> class Student { public: Student(); Student(string stu_id,string stu_name,int stu_age,string stu_sex,string stu_job) { this->stu_id = stu_id; this->stu_name = stu_name; this->stu_age = stu_age; this->stu_sex = stu_sex; this->stu_job = stu_job; } void addscore(); void show(); private: string stu_id; string stu_name; int stu_age; string stu_sex="男"; string stu_job="学生"; int stu_score=0; }; void Student::addscore() { string job = stu_job; if (job == "学生") this->stu_score += 0; else if (job == "班长") this->stu_score += 5; else if (job == "学习委员") this->stu_score += 3; else if (job == "团支书") this->stu_score += 2; }
void Student::show() { cout << "学号\t" << stu_id << "\t姓名 " << stu_name << "\t年龄 " << stu_age << "\t性别 " << stu_sex << "\t职务 " << stu_job << "\t分数 " << stu_score << endl; }
int main() { Student s1( "192062116","张帆", 22, "男", "班长"); Student s2("192062117", "张凡", 21, "女", "学生");
s1.addscore(); s1.show();
s2.addscore(); s2.show();
system("pause"); return 0; }
|
四、 结果

通过利用构造函数的重载,实现利用初始化列表对数据成员赋值