📄 subject_28305.htm
字号:
<p>
序号:28305 发表者:付增斌 发表日期:2003-01-20 12:45:14
<br>主题:如何重载<运算符
<br>内容:我在学习重载运算符是遇到了如下难题,请高手帮忙解决:<BR><BR>#include <iostream.h><BR>class Employee<BR>{<BR> private:<BR> float salary;<BR> Employee operator <(Employee);<BR> public:<BR> Employee();<BR> Employee(float);<BR> void getdata();<BR>};<BR>Employee::Employee()<BR>{<BR> salary=0;<BR>}<BR><BR>Employee Employee::operator <(Employee N)<BR>{<BR> Employee obj;<BR> if (obj.salary < N.salary)<BR> return true;<BR> else<BR> return false;<BR>}<BR>Employee::Employee(float wage)<BR>{<BR> salary=wage;<BR>}<BR><BR><BR><BR>void Employee::getdata()<BR>{<BR> cout<<"Input a float number: ";<BR> cin>>salary;<BR>}<BR><BR><BR><BR><BR><BR>void main(int argc, char* argv[])<BR>{<BR> Employee eObj1;<BR> Employee eObj2;<BR><BR> eObj1.getdata();<BR> eObj2.getdata();<BR><BR> if (eObj1<eObj2)<BR> cout<<"Employee1 draws less salry than Employee 2";<BR> else<BR> cout<<"Employee 2 draws less salary than Employee 1";<BR>}<BR>程序到 if (eObj1<eObj2)此语句时编译总通不过。<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:upstream 回复日期:2003-01-20 13:01:10
<br>内容:Employee Employee::operator <(Employee N)<BR>{<BR> Employee obj;<BR> if (obj.salary < N.salary)<BR> return true;<BR> else<BR> return false;<BR>}<BR>你的返回值是true和false,而定义的返回值却是类Employee;<BR> private:<BR> float salary;<BR> Employee operator <(Employee);<BR>定义成私有的也不可以,要用public:<BR><BR>请作如下修改:<BR><BR>public:<BR> bool operator <(Employee);<BR><BR>bool Employee::operator <(Employee N)<BR>{<BR> Employee obj;<BR> if (obj.salary < N.salary)<BR> return true;<BR> else<BR> return false;<BR>}<BR>就OK了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:付增斌 回复日期:2003-01-20 13:22:54
<br>内容:谢谢!编译能通过,但是求值却不对,因为构造函数 Employee() 总把salary的值还原为0<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:付增斌 回复日期:2003-01-20 13:24:14
<br>内容:谢谢!编译能通过,但是求值却不对,因为构造函数 Employee() 总把salary的值还原为0
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:upstream 回复日期:2003-01-20 13:29:28
<br>内容:我运行了,结果是正确的阿。<BR>下面是我运行的结果:<BR><BR>Input a float number: 23<BR>Input a float number: 45<BR>Employee1 draws less salry than Employee 2Press any key to continue<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:upstream 回复日期:2003-01-20 13:34:04
<br>内容:呵呵,我明白你的意思了,的确是有问题。<BR>bool Employee::operator <(Employee N)<BR>{<BR> Employee obj;///////////////////////////这里的obj.salary总是0<BR> if (obj.salary < N.salary)<BR> return true;<BR> else<BR> return false;<BR>}<BR>所以obj1永远小于obj2。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:upstream 回复日期:2003-01-20 13:40:18
<br>内容:用下面的函数试试:<BR><BR>bool Employee::operator <(Employee N)<BR>{<BR> if (Employee::salary < N.salary)<BR> return true;<BR> else<BR> return false;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:付增斌 回复日期:2003-01-20 13:55:13
<br>内容:thanks!我刚才也成功了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -