【发布时间】:2013-08-16 04:12:38
【问题描述】:
我正在为我的项目做一个小理性类,我重载了所有算术运算符。好吧,当我尝试重载 operator= 时,我有一点点,现在我不知道是我的问题(我不知道它是如何工作的)还是我的 writen 代码的问题(我写得不好)这是代码:
class rational{
public:
double& operator=(double& d){
d= this->num/this->den;
return d;
}
double& operator=(rational& r){
double d= r.num/r.den;
return d;
}
double& operator=(){
double d= this->num/this->den;
return d;
}
}
好的,怎么了?什么是对的? (我觉得都是错的哈哈)
我的目标是这样做:
int main(){
rational r(4, 5);
double d= r;
}
我可以吗?如果是,怎么做?
【问题讨论】:
-
您是向我们展示整个课程还是只展示部分课程?如果是全部,您需要定义一个接受 2 个双精度的构造函数,而不是赋值运算符来编译您的示例。此外,典型的
operator=实现返回对同一类实例的引用,而不是对输入参数的引用。 -
我想你在找
operator double。 -
谢谢!!我不知道存在操作员双重...谢谢!那么......我可以重载“所有”类型的运算符吗?我不知道谢谢所有的答案!
标签: c++ c++11 operator-overloading