分别给出如下5个文件:student.h、student.cpp、teacher.h、teacher.cpp和 main.cpp。在正确的位置,添加编译预处理命令;并将它们组织成一个工程, 编译执行。 b) 在Student类中,添加一个私有的静态数据成员count,用于统计学生总数。并 设计相应的静态成员函数showCount,以输出当前学生总数(注意:添加count 成员之后,要编写正确的复制构造函数和
时间: 2023-05-21 18:00:50 浏览: 141
析构函数,以避免count计数错误)。以下是代码示例:
student.h:
#ifndef STUDENT_H
#define STUDENT_H
class Student {
private:
static int count;
int id;
char* name;
public:
Student();
Student(int id, char* name);
Student(const Student& s);
~Student();
void showInfo();
static void showCount();
};
#endif
student.cpp:
#include "student.h"
#include <iostream>
using namespace std;
int Student::count = 0;
Student::Student() {
id = 0;
name = NULL;
count++;
}
Student::Student(int id, char* name) {
this->id = id;
this->name = new char[strlen(name) + 1];
strcpy(this->name, name);
count++;
}
Student::Student(const Student& s) {
id = s.id;
name = new char[strlen(s.name) + 1];
strcpy(name, s.name);
count++;
}
Student::~Student() {
delete[] name;
count--;
}
void Student::showInfo() {
cout << "ID: " << id << ", Name: " << name << endl;
}
void Student::showCount() {
cout << "Total number of students: " << count << endl;
}
teacher.h:
#ifndef TEACHER_H
#define TEACHER_H
class Teacher {
private:
int id;
char* name;
public:
Teacher();
Teacher(int id, char* name);
~Teacher();
void showInfo();
};
#endif
teacher.cpp:
#include "teacher.h"
#include <iostream>
using namespace std;
Teacher::Teacher() {
id = 0;
name = NULL;
}
Teacher::Teacher(int id, char* name) {
this->id = id;
this->name = new char[strlen(name) + 1];
strcpy(this->name, name);
}
Teacher::~Teacher() {
delete[] name;
}
void Teacher::showInfo() {
cout << "ID: " << id << ", Name: " << name << endl;
}
main.cpp:
#include "student.h"
#include "teacher.h"
int main() {
Student s1(1, "Tom");
Student s2(2, "Jerry");
Student::showCount();
s1.showInfo();
s2.showInfo();
Teacher t1(101, "Smith");
t1.showInfo();
return 0;
}