【1】后置++(基本内置类型)
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;
int a = 3;
int b = 0;
int c = 3;
a = a++;
a = a++;
b = c++;
cout << "a : " << a << endl;
cout << "b : " << b << endl;
cout << "c : " << c << endl;
return 0;
}
// out
/*
Hello World
a : 3
b : 3
c : 4
*/
【2】自定义类型
示例代码如下:
1 #include <iostream> 2 using namespace std; 3 4 class Age 5 { 6 public : 7 Age(int v = 18) : m_i(v) 8 {} 9 10 Age& operator++() //前置++ 11 { 12 ++m_i; // 自增1 13 return *this; 14 } 15 16 const Age operator++(int) // 后置++ 17 { 18 Age temp = *this; // 临时对象 19 ++(*this); // 调用前置++ 20 return temp; // 返回临时对象 21 } 22 23 Age& operator=(int i) // 赋值操作 24 { 25 this->m_i = i; 26 return *this; 27 } 28 29 int value() const 30 { 31 return m_i; 32 } 33 34 private : 35 int m_i; 36 }; 37 38 int main() 39 { 40 Age a; 41 a = a++; 42 cout << "a1 : " << a.value() << endl; 43 44 Age b; 45 b = a++; 46 cout << "a2 : " << a.value() << endl; 47 cout << "b1 : " << b.value() << endl; 48 49 //(a++)++; // 编译错误 50 //++(a++); // 编译错误 51 //a++ = 1; // 编译错误 52 (++a)++; // OK 53 cout << "a3 : " << a.value() << endl; 54 ++(++a); // OK 55 cout << "a4 : " << a.value() << endl; 56 ++a = 1; // OK 57 cout << "a5 : " << a.value() << endl; 58 return 0; 59 } 60 61 // run out: 62 a1 : 18 63 a2 : 19 64 b1 : 18 65 a3 : 21 66 a4 : 23 67 a5 : 1
分析总结:
(1)两种类型(内置类型、自定义类型)前置++和后置++的表现是一致的。
(2)前置++:自增1,返回对象本身。
(3)后置++:直接加1,但是,返回的是加1前的对象(临时对象)。
综上所述,a = a++; 这一句的执行结果:a的值没有改变。
Good Good Study, Day Day Up.
顺序 选择 循环 总结