C++面向对象结构改进

书接上回,基于上一篇的程序改进了结构,使用了构造函数和析构函数

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值