重载操作符输出
Overloading Operator output
大家好,我对c++相当陌生,虽然我有一些Java基础知识。
我有这个运算符<<:
std::ostream& operator<<(std::ostream& out, Rational& r) {
int a;
int b;
int c;
int d;
b = r.n_;
c = r.d_;
if (c >= b) {
a = (b / c);
d = (b % c);
r.n_ = d;}
return out << r.n_ << '/' << r.d_;
}
基本上我想做的是;如果我想输出的分数是一个假分数,我想在输出之前把它转换成一个混合数格式。我已经写了if语句来计算混合数,但我很难弄清楚如何使用<<操作符,因为它只能接受两个参数。如果有办法(不需要编辑类实例变量)。
(Rational类有两个实例变量Numerator和Denominator)
任何帮助或想法将非常感激,提前感谢。^ ^
提前感谢。
我真的不明白你所说的"<<
算子只能取两个参数"是什么意思。看起来你想做这样的事情:
std::ostream& operator<<(std::ostream& out, Rational& r)
{
if (r.n_ > r.d_)
{
int whole = r.n_ / r.d_;
int numerator = r.n_ % r.d_;
return out << whole << ' ' << numerator << '/' << r.d_;
}
return out << r.n_ << '/' << r.d_;
}
我认为这看起来很简单。也许我没听清你的问题?
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- 使用具体输出操作符的声明(带有具体签名)
- 位操作符的优先级对输出的影响
- Cxx-prettyprint(用于标准容器)在命名空间std中定义了它的输出操作符——这违反了标准吗?
- 在模板外部重载模板类的输出流操作符
- 在中缀到后缀的输出中没有操作符和括号
- 输出一个pair列表(由重载操作符创建)
- c++输出操作符重载
- c++重载输出操作符
- 将facet应用于所有流输出,使用自定义字符串操作符
- 重载操作符输出
- 操作符重载等同于c++中的PHP, echo/print类变量作为默认输出
- 操作符重载clang++和g++不同的输出
- 将节点作为输出操作符传递
- 为什么要将对对象的引用作为实参传递给重载输出操作符?
- 解引用操作符和endl没有输出
- 输入/输出操作符的优先级
- 操作符重载- c++ toString输出整数