声明一个学生类,有成员数据:学号、姓名、性别、年龄,要求有如下成员函数:构造函数、输出所有成员的函数
时间: 2024-10-22 18:10:09 浏览: 40
在编程中,你可以创建一个名为`Student`的类来表示学生的信息,包括学号、姓名、性别和年龄。下面是一个基本的`Student`类设计:
```cpp
class Student {
private:
int studentID; // 学号
string name; // 姓名
string gender; // 性别
int age; // 年龄
public:
// 构造函数,用于初始化所有成员数据
Student(int id, string n, string g, int a)
: studentID(id), name(n), gender(g), age(a) {}
// 成员函数:输出所有成员数据
void displayAllInfo() const {
std::cout << "学号: " << studentID << ", 姓名: " << name << ", 性别: " << gender << ", 年龄: " << age << std::endl;
}
};
```
在这里,构造函数接收四个参数对应学生的各个属性,而`displayAllInfo`函数则用于显示学生的全部信息。
相关问题
利用c++程序编写下面内容。 1.在类内声明与定义构造函数,给数据成员(年龄age、学号num 性别sex、姓名name)赋默认值(例如:18,202311,m, zhangsan) - . 2.定义一个对象stu1与对象指针p1,通过指针p1调用display()函数,查看构造函数给的默认值是否正确; 3. 在类内再声明一个构造函数,在类外定义,实现函数重载(此处不赋默认值);4.定义一个对象stu2,并给实参完成初始化,然后通过定义指针p2来访问stu2的display(),查看初始化的值是否正确;5.定义一个对象数组stu【3】,通过指针来依次输出3位学生的信息
好的,我来回答你的问题。
1. 在类内声明与定义构造函数,给数据成员赋默认值的代码如下:
```cpp
class Student {
public:
Student() : age(18), num("202311"), sex('m'), name("zhangsan") {}
Student(int a, string n, char s, string nu) : age(a), name(n), sex(s), num(nu) {}
void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Sex: " << sex << endl;
cout << "Number: " << num << endl;
}
private:
int age;
string num;
char sex;
string name;
};
```
2. 定义对象stu1和对象指针p1,并通过指针p1调用display()函数的代码如下:
```cpp
int main() {
Student stu1;
stu1.display();
Student* p1 = &stu1;
p1->display();
return 0;
}
```
这段代码会输出以下内容:
```
Name: zhangsan
Age: 18
Sex: m
Number: 202311
Name: zhangsan
Age: 18
Sex: m
Number: 202311
```
我们可以看到,对象stu1和对象指针p1调用display()函数输出的结果相同,说明对象指针p1调用函数的方式是正确的。
3. 在类内再声明一个构造函数,在类外定义,实现函数重载(此处不赋默认值)的代码如下:
```cpp
class Student {
public:
Student() : age(18), num("202311"), sex('m'), name("zhangsan") {}
Student(int a, string n, char s, string nu) : age(a), name(n), sex(s), num(nu) {}
Student(string n, string nu, char s, int a) : age(a), num(nu), sex(s), name(n) {}
void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Sex: " << sex << endl;
cout << "Number: " << num << endl;
}
private:
int age;
string num;
char sex;
string name;
};
```
这段代码中,我们新增了一个构造函数,它的参数列表与之前的构造函数不同,实现了函数重载。在类外定义这个构造函数的代码如下:
```cpp
Student::Student(string n, string nu, char s, int a) : age(a), num(nu), sex(s), name(n) {}
```
这段代码实现了构造函数的定义,并赋予了它传入参数的值。
4. 定义对象stu2,并给实参完成初始化,然后通过定义指针p2来访问stu2的display(),查看初始化的值是否正确的代码如下:
```cpp
int main() {
Student stu2(20, "lisi", 'f', "202312");
stu2.display();
Student* p2 = &stu2;
p2->display();
return 0;
}
```
这段代码会输出以下内容:
```
Name: lisi
Age: 20
Sex: f
Number: 202312
Name: lisi
Age: 20
Sex: f
Number: 202312
```
我们可以看到,对象stu2和对象指针p2调用display()函数输出的结果相同,说明对象指针p2调用函数的方式是正确的,并且初始化的值也是正确的。
5. 定义对象数组stu[3],通过指针来依次输出3位学生的信息的代码如下:
```cpp
int main() {
Student stu[3] = {
Student(19, "zhangsan", 'm', "202311"),
Student(20, "lisi", 'f', "202312"),
Student(18, "wangwu", 'm', "202313")
};
Student* p = stu;
for (int i = 0; i < 3; i++) {
p->display();
p++;
}
return 0;
}
```
这段代码会依次输出三位学生的信息,输出结果如下:
```
Name: zhangsan
Age: 19
Sex: m
Number: 202311
Name: lisi
Age: 20
Sex: f
Number: 202312
Name: wangwu
Age: 18
Sex: m
Number: 202313
```
我们可以看到,通过指针p依次输出对象数组stu中的三位学生的信息,输出的结果是正确的。
阅读全文