目录
作业1
写一个函数show_array,要求传入两个参数 void show_array(T t,int len)
第一个参数为数组默认值,第二个参数为数组的长度
此函数的功能为创建一个长度为len类型为T,默认值为t的数组并输出。
思路
定义了一个函数模板
show_array
,其目的是创建一个指定类型和长度的数组,并将给定的默认值填充到数组的每个元素中,然后输出这个数组。。
代码
#include <iostream>
using namespace std;
template<typename T>
void show_array(T t,int len)
{
T arr[len];
for(int i=0;i<len;i++)
arr[i]=t;
for(int i=0;i<len;i++)
cout<<arr[i]<<" ";
cout<<endl;
}
int main()
{
show_array(3,5);
show_array(3.14,8);
show_array('a',10);
return 0;
}
作业2:
定义学生类,有姓名,学号,性别,年龄等私有成员变量,有构造和析构函数,有打印信息的成员函数。
要求通过构造函数可以给属性赋予初始值。
定义大学生类,继承自学生类,大学生有专业名、成绩的私有成员变量,还有是否获得奖学金的成员函数(成绩为判断依据)。隐藏基类打印信息的成员函数,新的打印信息的成员函数也要能打印姓名、学号、性别、年龄信息。
要求通过构造函数可以给属性赋予初始值。
再定义研究生类,继承自大学生类,有导师姓名和工资的私有成员变量,有打印工资这个成员函数。
要求通过构造函数可以给属性赋予初始值。
思路
一、整体功能概述
实现了一个学生信息管理系统,包含了学生类(
Student
)、大学生类(DaStudent
)和研究生类(YanStudent
)的定义和使用。每个类都有特定的属性和方法,通过继承关系实现了代码的复用和扩展。二、类的定义与分析
Student
类:
- 成员变量:
name
:学生姓名,字符串类型。id
:学生学号,整数类型。sex
:学生性别,字符串类型。age
:学生年龄,整数类型。- 构造函数:
Student(string name, int id, string sex, int age)
:接受学生的姓名、学号、性别和年龄作为参数,初始化成员变量。- 成员函数:
show_Student()
:输出学生的基本信息,包括姓名、学号、性别和年龄。- 析构函数:
~Student()
:默认析构函数,目前为空。
DaStudent
类(大学生类):
- 成员变量:
- 继承自
Student
类的成员变量。zyname
:专业名称,字符串类型。score
:成绩,整数类型。- 构造函数:
DaStudent(string name, int id, string sex, int age, string zyname, int score)
:接受学生的基本信息以及专业名称和成绩作为参数,调用基类构造函数初始化继承的成员变量,并初始化自己的成员变量。- 成员函数:
show_Student()
:重写了基类的show_Student
函数,先调用基类的函数输出基本信息,然后输出专业名称和成绩。jxj()
:判断学生是否有奖学金,根据成绩是否大于 90 来确定。- 析构函数:
~DaStudent()
:默认析构函数,目前为空。
YanStudent
类(研究生类):
- 成员变量:
- 继承自
DaStudent
类的成员变量。dsname
:导师姓名,字符串类型。money
:工资,整数类型。- 构造函数:
YanStudent(string name, int id, string sex, int age, string zyname, int score, string dsname, int money)
:接受学生的基本信息、专业名称、成绩、导师姓名和工资作为参数,调用基类构造函数初始化继承的成员变量,并初始化自己的成员变量。- 成员函数:
show_money()
:输出研究生的工资。- 析构函数:
~YanStudent()
:默认析构函数,目前为空。三、主函数分析
创建一个普通学生对象
s
、一个大学生对象d
和一个研究生对象y
,并分别调用它们的成员函数来输出信息和判断奖学金情况。
代码
#include <iostream>
using namespace std;
class Student
{
private:
string name;
int id;
string sex;
int age;
public:
Student(string name,int id,string sex,int age):name(name),id(id),sex(sex),age(age){}
~Student(){}
void show_Student()
{
cout<<"姓名:"<<name<<" "<<"学号:"<<id<<" "<<"性别:"<<sex<<" "<<"年龄:"<<age;
}
};
class DaStudent:public Student
{
private:
string zyname;
int score;
public:
DaStudent(string name,int id,string sex,int age,string zyname,int score):Student(name,id,sex,age),zyname(zyname),score(score){}
~DaStudent(){}
void show_Student()
{
cout<<endl;
Student::show_Student();
cout<<" "<<"专业:"<<zyname<<" "<<"成绩:"<<score<<" ";
}
int jxj()
{
return score>90;
}
};
class YanStudent:public DaStudent
{
private:
string dsname;
int money;
public:
YanStudent(string name,int id,string sex,int age,string zyname,int score,string dsname,int money):DaStudent(name,id,sex,age,zyname,score),dsname(dsname),money(money){}
~YanStudent(){}
void show_money()
{
cout<<"研究生工资:"<<money<<endl;
}
};
int main()
{
Student s("张三",01,"man",14);
s.show_Student();
DaStudent d("李四",02,"man",18,"电科",95);
d.show_Student();
cout<<"是否有奖学金:"<<(d.jxj()?"是":"否")<<endl;
YanStudent y("王五",03,"woman",18,"土木",60,"老王",666);
y.show_money();
return 0;
}