2023/9/25
类的特殊成员函数
以类名为Operators举例
默认构造函数
Operators::Operators(){}
带默认参数的构造函数也可以是默认构造函数
Operators::Operators(int n = 5){
age = 5;
}
但是只能有一个默认构造函数
复制构造函数
Operators(const Operators &){}
何时调用?
Operators mizuki(mostima);
Operators mizuki = mostima;
Operators mizuki = Operators(mostima);
Operators *mizuki = new Operators(mostima);
默认的复制构造函数为浅拷贝,两个对象指向同一处地址。
如何采用深拷贝?
复制构造函数应该将复制后的地址副本赋给新成员,复制指向数据,而不是指针。
赋值运算符
默认的赋值运算符重载和复制构造函数一样,使用new和delete的时候,会出现再次删除已经删除了的数据,从而出现bug
如何解决问题?
提供赋值运算符深拷贝的定义。
注意以下内容:函数应该使用delete[]来释放以前分配的数据,但是函数要避免赋值给自身!
使用连等时应注意,=号返回的应该是对象,才可以连等(和重载<<运算符一个道理)