【发布时间】:2021-07-02 07:50:03
【问题描述】:
我正在构建一个关于有理数的 C++ 项目。 我已经定义了一个名为 RationalNumber 的类,它具有构造函数和算术(+、-、*、/)、关系(、=)和相等(==、!=)运算符的重载,还有>>。我有两个私有属性:分子和分母(整数)。 现在,我有一个问题!是否可以重载运算符 > 以返回两个 RationalNumber 对象中较大的一个指针?如果是,我该怎么办?
我是这样尝试的:
RationalNumber* RationalNumber::operator>(const RationalNumber& rn){
RationalNumber bigger;
if((double(numerator)/double(denominator) > double(rn.numerator)/double(rn.denominator))){
bigger.set_numerator(numerator);
bigger.set_denominator(denominator);
}
else{
bigger.set_numerator(rn.numerator);
bigger.set_denominator(rn.denominator);
}
return &bigger;
}
在哪里
void set_numerator (int num) { numerator=num; }
void set_denominator (int denom) { denominator=denom; }
并将分子和分母设置为公共属性。 在 main 函数中,我尝试打印
RationalNumber a( 2, 3 ), b( 1, 3 );
cout<<(a>b);
但我不确定这是正确的方法! 感谢您的帮助:)
【问题讨论】:
-
return &bigger;将返回悬空指针。 -
疯了!接下来怎么办,重载
<<和>>来读写有理数?? -
std::cout << std::max(a, b);? -
真正的问题是为什么
operator>的返回类型应该与bool不同? somone 是否试图搞砸代码阅读器? -
返回两个 RationalNumber 对象中较大的一个指针? -- 你的教授,很抱歉,浪费了很大一部分,如果不是一整天的话,当有更多本可以教授的相关 C++ 问题。
标签: c++ class pointers overloading