第一次发帖,请多多包涵!
我有一个像这样的界面
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/