C++运算符重载函数的调用问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:09:03
C++类内定义的运算符重载函数怎么实现相互调用?比如已经定义好了"+"的重载函数:Cfraction Cfraction::operator +(Cfraction temp),接着我
又开始定义"-"的运算符重载函数内容如下
Cfraction Cfraction::operator -(Cfraction temp)
{
temp.above=-temp.above;

}
写到这时我突然想到如果能调用上面的+运算符,程序不就简单了好多吗?可怎么调用呢,能不能调用呢,高手指教一二。
回三楼的,我说的是我的程序里的“temp.above=-temp.above;”应该没错吧,这个temp 只是局部变量,应该不会影响到调用这个函数的实参的值吧。

-。-是的你没有错
别人的意见是别人经验的总结,我当然会推荐我觉得最好的写法
你可以忽略我的程序。
只要你先声明过operator +(<type>) 就可以使用重载后的加法

通常我们会这样声明重载:Cfraction Cfraction::operator -(const Cfraction &temp)const; 就是为了防止对c=a+b运算时改变a和b的值
当然你可以这么做:
Cfraction Cfraction::operator -(const Cfraction &temp) const
{
Cfraction t(temp);//如果有拷贝构造函数
t.above=-t.above;
t+=*this;//可以用相同意义的函数代替如 t=t+*this;
return t;
}

这问题怎么不明不白的,什么叫在-运算符重载函数中调用+运算符呢?真叫我摸不着头脑……

应该是直接调用。。。
你用一个测试程序试一下就知道了。。
你的问题不是很明白。似懂非懂。。