实现后缀加加的重载
class_type& operator++(int){
……//不知道怎么样实现
}
也就是说不知道后缀加加的内部机制是怎么样实现的??
有人能说明白不?
重载后缀加加实现和内部类型相同的运算功能,可以不??
- Mr_Yang
- (初级程序员)
- 等 级:
#1楼 得分:0回复于:2005-12-15 23:26:13
增1减1运算符是单目运算符。它们又有前缀和后缀运算两种。为了区分这两种运算,将后缀运算视为又目运算符。表达式
obj++或obj--
被看作为:
obj++0或obj--0
#include <iostream.h>
class counter
{
public:
counter() { v=0; }
counter operator ++();
counter operator ++(int );
void print() { cout < <v < <endl; }
private:
unsigned v;
};
counter counter::operator ++()
{
v++;
return *this;
}
counter counter::operator ++(int)
{
counter t;
t.v = v++;
return t;
}
- wshcdr
- (dd)
- 等 级:
#2楼 得分:0回复于:2005-12-15 23:59:31
记住类似N++这样后缀的重载的原则如下
在下面的语句中
INT M = N++
M得到的值是N做++前的值
而N中保留的是做了++后的值
对照理解
counter counter::operator ++(int)
{
counter t;
t.v = v++;
return t;
}
- xuleicsu
- 等 级:
#3楼 得分:0回复于:2005-12-16 00:06:15
说的好,试验试验看看
精华推荐:一份C/C++实习生笔试试卷(基础部分),大家讨论一下答案吧!
- xuleicsu
- 等 级:
#4楼 得分:0回复于:2005-12-16 00:09:47
照上面写的,t.v=v++,实际上就是拷贝了一份调用operator ++(int)的对象,然后把这个拷贝的对象返回,然后v自加
精华推荐:给初学者的一点建议,顺便散一点赌球赢来的分
- superpingl
- (赖平)
- 等 级:
#5楼 得分:0回复于:2005-12-16 22:32:56
对于类的后缀运算的重载确实是这样的
但是我的问题不是这样的简单的,要是就这样能解决了就不用麻烦各位高人了
呵呵!!!!
我的意思是实现的后缀能进行四则运算。如:
int i,i1=5;
i=(i1++)+(i1++);
这样的运算能力。
但是在c++builder6.0这样的重载好像不行,
但是在vc++6.0中好像又可以。