关于operator重载的问题

iamsand 2002-08-06 01:23:08
#include<iostream.h>
class op
{
int number;
public:
op operator++();
void show();
op();
};
op::op()
{number=100;}

void op::show()
{
cout<<number<<"\n";
}
op op::operator ++()
{op A;
number++;
/////*[1] A.number=number; *//////

return A;}

void main()
{
op X,Y;

X++;
Y=++Y;
X.show();
Y.show();
}
//请解答为何如果加上[1],输出101,101;如果[1]掉则输出101,100.
...全文
36 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LocalVar 2002-08-13
  • 打赏
  • 举报
回复
我认为应该这样做:

#include<iostream.h>

class op
{
int number;
public:
op(void);
op(int n);
const op& operator++(void); //++n
const op& operator++(int); //n++
void show() const;
};

op::op()
{
number=0;
}

op::op(int n)
{
number=n;
}

void op::show(void) const
{
cout<<number<<"\n";
}

const op& op::operator ++(void)
{
number++;
return *this;
}

const op& op::operator ++(int)
{
number++;
return *this;
}

void main()
{
op X,Y;
X=Y++;
X.show();
Y.show();
}
LocalVar 2002-08-13
  • 打赏
  • 举报
回复
去读一下<effictive C++>吧,上面的做法有问题
iamsand 2002-08-13
  • 打赏
  • 举报
回复
好了
lisding 2002-08-06
  • 打赏
  • 举报
回复
我没太明白你的意思!我做了一个++的你看看
#include<iostream.h>

class op
{
int number;
public:
op(void);
op(int n);
op operator++(void); //++n
op operator++(int); //n++
void show();
};

op::op()
{
number=0;
}

op::op(int n)
{
number=n;
}

void op::show(void)
{
cout<<number<<"\n";
}

op op::operator ++(void)
{

op A;
number++;
A.number=number;
return A;
}

op op::operator ++(int)
{
op A;
A.number=number;
number++;
return A;
}

void main()
{
op X,Y;
X=Y++;
X.show();
Y.show();
}
sdx_none 2002-08-06
  • 打赏
  • 举报
回复
还有必须是Y++,不能是++Y;
sdx_none 2002-08-06
  • 打赏
  • 举报
回复
op op::operator ++()
{op A;
number++;
//A.number=number;
return A;//改为return *this;}

就行了!
e2wugui 2002-08-06
  • 打赏
  • 举报
回复
你的代码可以编译通过吗?

++ 在前面和后面是不一样的。

Prefix
Ob& operator++() { val++; return *this; }
Postfix
Ob operator++(int) { Ob tmp = *this; val++; return tmp; }

kaku_you 2002-08-06
  • 打赏
  • 举报
回复
[1]没有的话,A.number还是100
注意你的Y=++Y
这里Y被重新复制了
应该是op& operator++()才对

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧