前置操作符和后置操作符
-
-
对于基本类型:
-
二者没有区别,因为编译器会对代码进行优化,二者的汇编代码完全相同
-
-
对于类类型:
-
二者有区别
-
前置的效率更高,建议使用
-
-
-
重载"++i"和"i++"
-
重载前置操作符:classname& operator ++()
-
重载后置操作符:classname operator ++(int)
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class Test 7 { 8 int mValue; 9 public: 10 Test(int i) 11 { 12 mValue = i; 13 } 14 15 int value() 16 { 17 return mValue; 18 } 19 20 Test& operator ++ () //前置重载 21 { 22 mValue += 1; 23 return *this; 24 } 25 26 Test operator ++ (int) //后置重载 27 { 28 Test ret(mValue); 29 mValue += 1; 30 return ret; 31 } 32 }; 33 34 int main() 35 { 36 Test t1(1); 37 cout<<"t1++ = "<<(++t1).value()<<endl; // t1++ = 2 38 39 Test t2(1); 40 cout<<"t2++ = "<<(t2++).value()<<endl; //t2++ = 1 41 42 return 0; 43 }