簡體   English   中英

c++ object 類型數組包含子對象

[英]c++ object type array contains subobject

我有使用接口和對象的 Java 代碼。 但是我不能用 C++ 寫它。 你能幫幫我嗎?

有一個接口名為Operation.java這里是代碼。

public interface Operation {
    int evaluation(int x, int y); 
}

有一個 class 執行操作 class 名為Multiply.java這是代碼。

public class Multiply implements Operation {
  public int eval(int x, int y) {
    return = x*y;
  }
}

還有一個 class 執行操作 class 名為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++ 我們沒有接口關鍵字或其他東西。 但在 java 中的接口類似於 c++ class 與純虛擬 ZC1C425268E68385D14AB5074C17A

class Operation
{
public:
  virtual int eval(int x, int y) = 0; 
}

這很像現在每個繼承 Operation 的 class 都必須執行評估的接口。 在 c++ 中,與 java 不同,我們有多個 inheritance。

現在您可以編寫如下代碼:

class Multiply: public Operation {
public:
  int eval(int x, int y) override {
    return x*y;
  }
}

注意: override 關鍵字很重要。

然后你可以寫:

Operation* a = new Multiply();

但還要注意,您可以將 OOP 代碼轉換為 c++ 世界中的簡單功能代碼。

等等..

鑒於您的最終目標似乎是調用這些東西,我可能建議不要首先制作對象。 C++(以及最新版本的 Java,就此而言)具有一流的功能,這意味着您可以免費編寫函數並將它們視為對象。

#include <vector>
#include <functional>

int add(int x, int y) {
  return x + y;
}

int multiply(int x, int y) {
  return x * y;
}

int main() {
  std::vector<std::function<int(int, int)>> arr { add, multiply };
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM