//因为i是基本类型int,而且没有用到整个表达式的值,所以在楼主的情况下,两种写法是一样的
//下面换一种,i不是基本类型,比如类类型,根据Effective C++的条款,使用了里面的手法:前置的++实作一个后置的++至于为什么,请看Effective C++
#include <iostream>
using namespace std;
class Int
{
int data;
public:
Int(int value = 0) : data(value){}
operator int (){return data;}
Int& operator ++(){++data;return *this;}
Int operator ++(int){Int t = *this; ++*this;cout << 0;return t;}
};
int main()
{
for (Int i = 0; i < 8; ++i)
cout << i;
cout << endl;
for (Int i = 0; i < 8; i++)
cout << i;
return 0;
}
//下面换一种,i不是基本类型,比如类类型,根据Effective C++的条款,使用了里面的手法:前置的++实作一个后置的++至于为什么,请看Effective C++
#include <iostream>
using namespace std;
class Int
{
int data;
public:
Int(int value = 0) : data(value){}
operator int (){return data;}
Int& operator ++(){++data;return *this;}
Int operator ++(int){Int t = *this; ++*this;cout << 0;return t;}
};
int main()
{
for (Int i = 0; i < 8; ++i)
cout << i;
cout << endl;
for (Int i = 0; i < 8; i++)
cout << i;
return 0;
}