我有一堆非常长的方程式形式的数据,其中包括(a/b)形式的有理数,其中a和b是整数。我做了一个简单的类,用相应的算术运算符存储有理数。

我正在尝试编写一些能够识别(a/b)形式的代码,并使用相应的分子和分母构造该类的实例。我更希望保留输入(a/b)的原始形式。是否可以重载/运算符,以便(a/b)将返回有理数对象? (如果没有,有任何解决方法的想法吗?)

非常简化的代码示例:

Param A;
Param B;
(3/5)*A*A + (1/3)*B*B

我的Param类与其自身以及与有理数类都有明确定义的乘法。我只需要将(3/5)(1/3)识别为有理数实例的代码。

最佳答案

没有;如果至少一个操作数是用户定义的类型,则只能重载操作符。您不能重载两个操作数均为operator/或任何其他内置类型的int

您可以获得的最接近的是rational(a)/b。是否比rational(a,b)更好,取决于您的审美判断。

在C++ 11或更高版本中,您可以修改用户定义的文字并编写类似3_r/4的代码;但是我不会。

关于c++ - 使用/创建简单的有理数对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23562299/

10-09 13:43