课时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;//返回原有对象值 }