定义student基类:数据成员name及其set和get函数,无参和有参构造函数,show()
时间: 2023-12-14 16:36:52 浏览: 133
以下是定义student基类的示例代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
class student {
public:
student() {}
student(const string& name) : name_(name) {}
void setName(const string& name) {
name_ = name;
}
string getName() const {
return name_;
}
void show() const {
cout << "Name: " << name_ << endl;
}
private:
string name_;
};
```
该基类包含一个数据成员`name_`,以及对应的set和get函数。同时,它还包含无参和有参构造函数以及一个名为`show()`的成员函数,用于打印输出数据成员的值。
相关问题
用定义student基类:数据成员name及其set和get函数,无参和有参构造函数,show() 定义student的子类undergraduate:增加数据成员major及其set和get函数,无参和有参构造函数,show( 在main函数中声明子类对象,调用成员函数,观察运行结果,理解类的继承,父类和子类构造函数调用时的关系,理解成员函的覆盖
下面是定义student基类和undergraduate子类的代码:
```C++
#include <iostream>
#include <string>
using namespace std;
class student {
private:
string name;
public:
student() {}
student(string n) : name(n) {}
void setName(string n) { name = n; }
string getName() { return name; }
virtual void show() { cout << "Name: " << name << endl; }
};
class undergraduate : public student {
private:
string major;
public:
undergraduate() {}
undergraduate(string n, string m) : student(n), major(m) {}
void setMajor(string m) { major = m; }
string getMajor() { return major; }
void show() { cout << "Name: " << getName() << ", Major: " << major << endl; }
};
int main() {
student s("Tom");
s.show(); // Name: Tom
undergraduate u("Jerry", "Computer Science");
u.show(); // Name: Jerry, Major: Computer Science
u.setName("Jack");
u.setMajor("Mathematics");
u.show(); // Name: Jack, Major: Mathematics
student* p = &u;
p->show(); // Name: Jack,因为调用的是子类的show函数,所以输出结果与父类的show函数不同
return 0;
}
```
在上面的代码中,我们定义了一个 `student` 基类,其中包含了一个数据成员 `name` 和相应的 set 和 get 函数,以及无参和有参构造函数和一个 `show` 函数。然后我们定义了一个 `undergraduate` 子类,它继承了 `student` 基类,并增加了一个数据成员 `major` 和相应的 set 和 get 函数,以及无参和有参构造函数和一个 `show` 函数。在 `undergraduate` 子类中,我们使用了 `student` 基类的构造函数来初始化其 `name` 成员。同时,我们还重写了 `show` 函数,使得在输出时包含了 `major` 数据成员的信息。
在 `main` 函数中,我们首先创建了一个 `student` 对象 `s` 和一个 `undergraduate` 对象 `u`,并分别调用了它们的 `show` 函数,观察输出结果。然后我们使用 set 函数修改了 `u` 对象的 `name` 和 `major` 数据成员,并再次调用了 `show` 函数,观察输出结果。接着,我们声明了一个 `student` 基类的指针 `p` 并将其指向 `u` 对象,然后调用了 `p` 所指向对象的 `show` 函数,观察输出结果。由于 `show` 函数是虚函数,因此在调用时会根据实际指向的对象来决定调用哪个版本的函数。在这个例子中,由于 `p` 指向的是 `undergraduate` 对象,因此调用的是 `undergraduate` 子类的 `show` 函数,输出了相应的信息。
编写一个学生和教师数据输入和显示程序(P.197 习题4.22): 学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类Person,并作为学生数据操作类Student和教师数据操作类Teacher的基类。 简单分析:一共有三个类,基类Person,派生类Student、Teacher。 Person类为基类: 属性包括: 姓名、性别、年龄(设成什么访问属性才好?) 方法包括: 各种属性的输入set、各种属性的打印get or show(或者setPerson、showPerson) 各种构造函数 析构函数 作用:为另外两个类提供基本信息 Student类 是Person类的(公有私有?保护?)派生类, 属性包括: 学号、年级、班级、专业等信息(设成什么访问属性?) 方法包括: 各种get、set(or show) 各种构造函数 析构函数 Teacher类 是Person类的(公有私有?保护?)派生类, 属性包括: 部门、职称等信息(设成什么访问属性?) 方法包括: 各种get、set(or show) 各种构造函数 析构函数 Main函数: 编写测试Teacher、Student数据的输入、打印等。
你可以按照以下方式编写一个学生和教师数据输入和显示程序:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Person {
protected:
string name;
string gender;
int age;
public:
Person() {
name = "";
gender = "";
age = 0;
}
void setName(string n) {
name = n;
}
void setGender(string g) {
gender = g;
}
void setAge(int a) {
age = a;
}
string getName() {
return name;
}
string getGender() {
return gender;
}
int getAge() {
return age;
}
void showPerson() {
cout << "Name: " << name << endl;
cout << "Gender: " << gender << endl;
cout << "Age: " << age << endl;
}
};
class Student : public Person {
private:
int studentID;
int grade;
int classNumber;
string major;
public:
Student() : Person() {
studentID = 0;
grade = 0;
classNumber = 0;
major = "";
}
void setStudentID(int id) {
studentID = id;
}
void setGrade(int g) {
***
阅读全文
相关推荐













