1. 程式人生 > 其它 >c++中遞增運算子的過載

c++中遞增運算子的過載

要注意遞增遞減運算子有前置和後置的問題,使用類內定義,在形參上使用給一個int站位符,編譯器會把有佔位符的定義為後置,前置運算正常進行,返回一個引用

後置運算要返回一個值,而不是引用,因為實際的值已經改變了,返回的值是一個改變前的,因為這個值是用區域性變數儲存的,所以不能返回引用,因為相同的原因,在呼叫這個返回值的是時候只能使用拷貝運算而不能使用引用,所以operator<<也做了相應修改,

class Person {   public:   Person();   Person & operator++ ();   Person operator++(int);
  int m_a;
  private:   int m_b; }; Person & Person::operator++() {   this->m_a++;   return *this; } Person Person::operator++(int) {   Person temp = *this;   m_a++;   return temp; } Person::Person() {   m_a = 10;   m_b = 10; } ostream & operator<< (ostream &cout,Person p) {   cout << p.m_a ;
  return cout; }