今天主要讲拷贝构造函数,给构造函数、析构函数、虚函数、纯虚函数留个坑
拷贝构造函数
注意事项:
1:如果类中有全局堆变量,那么就要考虑是否重写拷贝函数,因为默认的拷贝函数只是简单的赋值,会导致多个实例的堆变量共用同一个堆空间。
class A
{
public:
A() {
name = new char[20];
}
A(const A&obj){
name = new char[strlen(getName.name)]; //重写拷贝函数,为name分配空间
strcpy(name, obj.name);
//this->name = obj.name; //如果是默认构造函数,name就是这样赋值的,那么就会导致被赋值对象的name与赋值对象的name使用同一份堆空间
}
const *getName()const{
return this->name;
}
private:
char *name;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
A a1;
A b1 = a1; //这里只调用了a1的拷贝函数,
return a.exec();
}