请帮决解一个二级C++上机问题.

来源:百度知道 编辑:UC知道 时间:2024/09/22 22:40:33
请改正程序中的错误,使程序输出结果为:
m_Nunber=11
m_Number=13
错误的语句在/*********found********/的下面.修改该语句即可.其他语句不能修改.请修改后顺便在后面注解释.谢谢!!

#include<iostream.h>
class C0
{
int m_Number;
public:
C0(int i)
{
m_Number = i;
}
/********found********/
friend operator ++()
{
t.m_Number++;
}
/********found********/
operator ++()
{
m_Number+=2;
}
void print()
{
cout<<"m_Number= "<<m_Number<<endl;
}
};
int main()
{
C0 obj(10);
/********found********/
obj++;
obj.print();
obj++;
obj.print();
system("pause");
return 0;

}

1
friend operator ++()
{
t.m_Number++;
}
改为
friend operator ++(C0& t) //非成员重载指定对象
{
t.m_Number++;
}
2
operator ++(int)//后置++运算符的定义
{
m_Number+=2;
}
3
main()函数内
++(obj);
obj.print();
obj++;
obj.print();

friend operator ++()
{
t.m_Number++;
}
不是在类中定义,应该 在类外面定义,把它放在类的外面定义。这是一个后++重载,括号内应该有参数是(int).