利用C++编制学生类(学号,姓名,年龄,性别,班级),实现学生类的三种构造函数三种(无参,3参数,5参数),析构函数
时间: 2024-05-09 19:18:16 浏览: 55
好的,这个问题是关于编程的,我可以回答。以下是利用C语言编制的学生类:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生类
typedef struct student {
int id; // 学号
char name[20]; // 姓名
int age; // 年龄
char gender; // 性别,M为男性,F为女性
char class[10]; // 班级
} Student;
// 无参构造函数
Student* create_student() {
Student* s = (Student*)malloc(sizeof(Student));
s->id = 0;
s->name[0] = '\0';
s->age = 0;
s->gender = 'M';
s->class[0] = '\0';
return s;
}
// 3参数构造函数
Student* create_student_with_params(int id, char* name, int age) {
Student* s = (Student*)malloc(sizeof(Student));
s->id = id;
sprintf(s->name, "%s", name);
s->age = age;
s->gender = 'M';
s->class[0] = '\0';
return s;
}
// 5参数构造函数
Student* create_student_with_all(int id, char* name, int age, char gender, char* class) {
Student* s = (Student*)malloc(sizeof(Student));
s->id = id;
sprintf(s->name, "%s", name);
s->age = age;
s->gender = gender;
sprintf(s->class, "%s", class);
return s;
}
// 析构函数
void destroy_student(Student* s) {
free(s);
}
int main() {
// 使用无参构造函数创建学生对象
Student* s1 = create_student();
printf("%d %s %d %c %s\n", s1->id, s1->name, s1->age, s1->gender, s1->class);
destroy_student(s1);
// 使用3参数构造函数创建学生对象
Student* s2 = create_student_with_params(1001, "Tom", 18);
printf("%d %s %d %c %s\n", s2->id, s2->name, s2->age, s2->gender, s2->class);
destroy_student(s2);
// 使用5参数构造函数创建学生对象
Student* s3 = create_student_with_all(1002, "Jane", 19, 'F', "Class 1");
printf("%d %s %d %c %s\n", s3->id, s3->name, s3->age, s3->gender, s3->class);
destroy_student(s3);
return 0;
}
```
以上代码定义了一个`Student`结构体,并实现了三个构造函数和一个析构函数。可以使用不同的构造函数来创建学生对象,使用析构函数来释放动态分配的内存。