书接上回,基于上一篇的程序改进了结构,使用了构造函数和析构函数
student.h:
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <iostream>
using namespace std;
class Student
{
private:
char* m_name;
int m_age;
int m_score;
public:
Student();
Student(const char* name, int age, int score);
~Student();
void setName(const char* name);
void setAge(int age);
void setScore(int score);
void show();
};
Student::Student()
{
m_name = NULL;
m_age = 0;
m_score = 0;
}
Student::Student(const char* name, int age, int score)
{
m_name = new char[strlen(name) + 1]; // 分配内存
strcpy(m_name, name); // 复制字符串
m_age = age;
m_score = score;
}
void Student::setName(const char* name)
{
delete[] m_name; // 释放原来的内存
m_name = new char[strlen(name) + 1]; // 分配新的内存
strcpy(m_name, name); // 复制字符串
}
void Student::setAge(int age)
{
m_age = age;
}
void Student::setScore(int score)
{
m_score = score;
}
Student::~Student()
{
delete[] m_name; // 释放内存
}
void Student::show()
{
if (m_name == NULL)
{
cout << "目前还没有初始化";
return;
}
cout << "姓名:" << m_name << endl;
cout << "年龄:" << m_age << endl;
cout << "分数:" << m_score << endl;
}
student.cpp:
#include "student.h"
int main()
{
Student stu("Zzj", 19, 98);
stu.show();
Student STU;
STU.show();
return 0;
}