C++ 中的 Java 接口(interface)

标签 java c++

第一次发帖,请多多包涵!

我有一个像这样的界面

public interface I_Hospital{
    public void registerObserver(I_Person p);
    public void removeObserver(I_Person p);
    public void notifyObservers();
    public void addWard(Ward ward);
}

现在,如果我想在 C++ 中重新创建它,执行以下操作是否正确:

IHospital.h

Class IHospital{
    public:
    virtual void registerObserver(IPerson p) = 0;
    etc...
}

这是 C++ 接口(interface)上的正确实现吗?

谢谢,帕特里克

最佳答案

是的,您可以将接口(interface)定义为包含纯虚拟函数的抽象类(纯度由= 0表示),就这样。与 Java 的接口(interface)一样,抽象类不能直接实例化,而必须由重写并实现纯虚函数的具体类派生。

有几个问题:

  • 引入类的关键字是class而不是Class
  • 您需要通过引用获取 IPerson 参数,IPerson &,而不是通过值;抽象类不能按值传递。这同样可能适用于 Ward 论点;即使它不是抽象的,您也可能希望此类引用一个病房(如 Java 版本),而不是复制一个病房。与 Java 不同,将类对象传递给函数将传递该对象的拷贝,除非您明确要求通过引用传递它。

关于C++ 中的 Java 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25851296/

相关文章:

c++ - is_enum 实现

Java 系统范围的键盘快捷键

java - 在 Java 中重载 addAll 函数

java - 为什么 this.getClass().getName() 会产生与 StackTraceElement.getClassName() 不同的结果?

java - 将全选行添加到 ListView 中

c++ - Visual Studio 2015 “non-standard syntax; use ' &' to create pointer for member”

c++ - Detect BIOS from WinPE : Legacy or UEFI, using vbs//Outputting results from a .exe to .txt 文件

c++ - 如何将 "safely"文件夹删除到回收站

java - 如何将docker容器日志保存在机器上而不是容器中

c++ - 如何为当前进程重定向标准输出和标准错误?