|
|
发表于 2005-11-27 23:25:30
|
显示全部楼层
Post by xufan106
好像不是这样;
我试了一下
- #include<iostream>
- using namespace std;
- int main ()
- {
- int i=2;
- cout <<"(++i)+(++i)+(++i)+(++i)+(++i)="<<(++i)+(++i)+(++i)+(++i)+(++i)<<" ; i="<<i<<endl;
- i=2;
- cout <<"(++i)+(++i)+(++i)+(++i)="<<(++i)+(++i)+(++i)+(++i)<<" ; i="<<i<<endl;
- i=2;
- cout <<"(++i)+(++i)+(++i)="<<(++i)+(++i)+(++i)<<" ; i="<<i<<endl;
- i=2;
- cout <<"(++i)+(++i)+0="<<(++i)+(++i)+0<<" ; i="<<i<<endl;
- i=2;
- cout <<"(++i)+(++i)="<<(++i)+(++i)<<" ; i="<<i<<endl;
- i=2;
- cout <<"(++i)="<<(++i)<<" ; i="<<i<<endl;
- return 0 ;
- }
复制代码
输出为
-
- (++i)+(++i)+(++i)+(++i)+(++i)=26 ; i=7
- (++i)+(++i)+(++i)+(++i)=19 ; i=6
- (++i)+(++i)+(++i)=13 ; i=5
- (++i)+(++i)+0=8 ; i=4
- (++i)+(++i)=8 ; i=4
- (++i)=3 ; i=3
复制代码
这个和我说的有区别吗?从第三个开始才是加上(++i)当时的值
Post by MatthewGong
第一步 ++i,使i=3,返回i的“引用”
第二步 ++i,使i=4,返回i的“引用”
第三步 i的“引用”+i的“引用”,返回临时变量,值为4+4=8
第四步 ++i,使i=5,返回i的“引用”
第五步 临时变量+i的“引用”,8+5=13
第六步 返回表达式的值13
这里的关键是前置++返回的是“引用”!!!!
你重载operator++()时有没有注意过这一习惯作法?
MatthewGong说的是
前缀式:
template<class T> T& operator++();
后缀式:
template<class T> T operator++(int);
这点居然忘了,惭愧……
补基础…… |
|