课时23运算符重载
运算符重载
重载赋值运算符
Person& Person::operator=(const Person& other)
{
//检查自赋值
if (this == &other)
{
return *this;
}
//释放原有的内存资源
delete[]m_data; int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
//返回本对象的引用
return *this;
}
课时25自增运算符重载
运算符重载
前增量与后增量的区别
使用前增量时,对对象(操作数)进行增量修改,然后再返回该对象
使用后增量时,必须在增量之前返回原有的对象值
class Increase
{
public:
Increase(int x) :value(x)
{ }
Increase& operator ++();//前增量
Increase operator ++(int);//后增量
private:
int value;
};
++的成员形式的重载
Increase& Increase::operator ++()//前增量
{
value++;//先增量
return *this;//再返回有对象
} Increase Increase::operator ++(int)//后增量
{
Increase temp(*this);//临时对象存放原有对象值
value++;//原有对象增量修改
return temp;//返回原有对象值
}