对象的赋值与复制及拷贝构造函数

8、小作业:
实现 CStudent 类的拷贝构造函数,让 第 7 点的代码不崩溃!要慎重 new 和 delete 哦!

#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
    char* name;
    char sex;
    unsigned int age;
    unsigned int num;
    Student(char* t_name,char t_sex, unsigned int t_age,unsigned int t_num):sex(t_sex),age(t_age),num(t_num)
    {
        name = NULL;
        int t = strlen(t_name);
        name = new char[t + 1];
        memset(name, 0, t + 1);
        strcpy(name, t_name);
    };
    Student(Student& stu)
    {
        int name_len = 0;
        if (stu.name) name_len = strlen(stu.name);
        this->name = NULL;
        if (name_len > 0)
        {
            this->name = new char[name_len + 1];
            memset(this->name, 0, name_len + 1);
            strcpy(this->name, stu.name);
        }
        this->age = stu.age;
        this->num = stu.num;
        this->sex = stu.sex;
    }
    ~Student()
    {
        delete[] name;
    }
};
void test()
{
    Student stud("aaa",'m',15,1 );
    Student stud_1(stud);
}
int main()
{
    
    test();
    return 0;
}

 

posted on 2021-01-08 20:23  SakuraQAQ  阅读(115)  评论(0)    收藏  举报

导航