析构函数主要用于类生命周期结束后的释放工作,
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返回一个类,或者通过实参传递给形参赋值,则就会调用这个方法。
在这里是深拷贝,如果是浅拷贝则只会拷贝他的地址,深拷贝则会从新拷贝一份相同的值,同时创建一个新的内存地址
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。