C++ 实验二 构造函数的重载

247 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

🎬本文章是 【C++笔记】 专栏的文章,主要是C++黑马的笔记、自己的实验与课设
🔗C++笔记 传送门

一、要求

设计一个学生类,学生的基本信息有学号、姓名、年龄、性别和班级职务(班长、学习委员、团支书和学生)等,通过增加构造函数,使对象在定义时能够对其数据成员进行初始化。其中,性别的默认值为“男”,班级职务默认为“学生”。具体要求如下:

  1. 设计构造函数,完成对对象数据成员的初始化。其中,数据成员初始化采用成员初始化列表

  2. 设计一个加分函数,针对学生的班级职务进行加分。如果是普通学生不加分,班长加5分,学习委员加3分,团支书加2分

  3. 设计输出函数,输出的基本信息,以及该生应该加的分数。

二、分析

数据成员使用成员初始化列表,所以使用构造函数,在构造函数中利用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;
}

四、 结果

在这里插入图片描述

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