关闭

欢迎使用CSDN-markdown编辑器

97人阅读 评论(0) 收藏 举报
分类:

析构函数主要用于类生命周期结束后的释放工作,

class Teacher{
public :
    int age;
    char* name;

public:
    Teacher(char* name, int age){
        this->name = (char*)malloc(strlen(name)+1);
        this->age = 20;
        strcpy(this->name, name);
        cout << "无参构造函数" << endl;
    }

    Teacher(Teacher &teacher){
        this->name = (char*)malloc(strlen(teacher.name)+1);
        strcpy(this->name,teacher.name);
        this->age = teacher.age;
    }

    ~Teacher(){
        free(this->name);
        cout << "析构函数" << endl;
    }

    void print(){
        cout << "姓名:" << this->name << "   年龄:" << this->age << endl;
    }
};

每当初始化完成这个类以后,使用完毕后会调用这个类的析构函数。
拷贝:在Teacher这个类里面有一个函数

Teacher(Teacher &teacher){
        this->name = (char*)malloc(strlen(teacher.name)+1);
        strcpy(this->name,teacher.name);
        this->age = teacher.age;
    }

如果对一个类的定义赋初值,或者通过return返回一个类,或者通过实参传递给形参赋值,则就会调用这个方法。
在这里是深拷贝,如果是浅拷贝则只会拷贝他的地址,深拷贝则会从新拷贝一份相同的值,同时创建一个新的内存地址

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5344次
    • 积分:284
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:1篇
    • 译文:4篇
    • 评论:0条