【发布时间】:2021-08-15 21:34:19
【问题描述】:
我有使用接口和对象的 Java 代码。但是我不能用 C++ 编写它。你能帮我解决一下吗?
有一个接口名为Operation.java这是代码。
public interface Operation {
int evaluation(int x, int y);
}
有一个类实现了名为Multiply.java的Operation类代码如下。
public class Multiply implements Operation {
public int eval(int x, int y) {
return = x*y;
}
}
还有一个类实现了Operation类,名为Summation代码如下。
public class Add implements Operation {
public int eval(int x, int y) {
return = x+y;
}
最后,它声明了这个数组。
private static final Operation[] OPERATIONS = {new Multiply(), new Summation()};
在这里,我正在尝试用 C++ 编写这段代码。但是我对 C++ 的 OOP 没有深入的了解。我完全理解 Java 代码,但我不能用 C++ 编写。你能帮忙吗?
谢谢。
【问题讨论】:
-
在 C++ 中,“接口”是一个只有纯抽象函数的类。为了使多态性在 C++ 中工作,您需要使用指向具体对象的指针初始化的 base 类的指针(或引用)。 many decent C++ books 应该教过你的。
-
关于翻译语言的一般提示:在两种编程语言之间进行翻译(无论它们看起来多么相似)非常类似于在两种口语或书面语言之间进行翻译。您需要精通两种语言才能做好。而且,不要直接翻译,它们几乎永远不会好转。取而代之的是采用新语言的设计并重新实现它,使用该语言的所有功能和优势。
-
按照已经说过的内容,通常在 C++ 中,您不需要 延迟调度多态性(这基本上是 Java 对大多数问题的钝器解决方案)。虽然您可以在 C++ 中使用它,但在您的情况下,最好只编写一个名为
add的函数。该函数(指针)是可以传递的一流对象,并且通过适当使用模板,可以在任何需要的地方使用。 OOP 继承并不是您可以使用的唯一工具,而且在 C++ 中,坦率地说,它很少是最好的工具。
标签: java c++ class object implementation