注册 登录
编程论坛 C++教室

[求助]++(++n)和++n;++n;有什么区别啊???

animeo 发布于 2007-10-12 21:28, 494 次点击
#include<iostream.h>
class I
{
public:
I(int x){value=x;}
I operator ++();
I operator ++(int);
I operator --();
I operator --(int);
void show()
{
cout<<value<<'\n';
}
int value;
};
I I::operator ++()
{
value++;
return*this;
}
I I::operator ++(int)
{
I temp(*this);
value++;
return temp;
}
void main()
{
I n(20);
++(++n); //这里我变成++n;++n;
n.show();
}
当我运行++(++n)时是21,而用++n;++n;是22.我知道是最外面的++不起作用,但是为什么不起作用呢?
5 回复
#2
coachard2007-10-12 21:48
#include<iostream>
using namespace std;
class I
{
public:
I(int x){value=x;}
I &operator ++();
I operator ++(int);
I operator --();
I operator --(int);
void show()
{
cout<<value<<'\n';
}
int value;
};
I &I::operator ++()
{
value++;
return *this;
}
I I::operator ++(int)
{
I temp(*this);
value++;
return temp;
}
int main(void)
{
I n(20);
++(++n);
n.show(); //22
return 0;
}

[此贴子已经被作者于2007-10-12 21:49:05编辑过]

#3
animeo2007-10-12 22:04

斑竹,你编的代码和我不一样啊,所以结果不一样啊

#4
aipb20072007-10-12 22:42

分成两句写不好吗?

何必为了节约那点时间去冒险写这样编译器接受困难的代码!

#5
coachard2007-10-12 23:02
回复:(animeo)斑竹,你编的代码和我不一样啊,所以结...
我以为你一定要让外面的++起作用。。。

[此贴子已经被作者于2007-10-12 23:03:05编辑过]


#6
永夜的极光2007-10-13 07:27
同意四楼,不同的编译器其实对这种结构的判断都可能有区别
1