【发布时间】:2011-11-20 05:51:46
【问题描述】:
在 Java 中,您可以将接口定义为没有实际代码实现的类,而只定义类必须实现的方法。这些类型可以作为参数传递给方法并从方法返回。据我所知,在 C++ 中,纯虚拟类不能用作参数或返回类型。有什么方法可以模仿 Java 的接口类?
我在 C++ 中有一个字符串类,以及从基本字符串类派生的不同编码(如 UTFxxx、ISOxxx 等)的几个子类。然而,由于有这么多不同的编码,基类没有有意义的实现。但是,如果我可以将它作为自己的对象来处理,并且对该对象的调用将调用它所继承的正确子类,它会很好地用作接口。
【问题讨论】:
-
你当然可以使用抽象类作为参数或返回类型...你能显示一些代码吗?
-
还没有实现纯虚拟基类。我正在阅读几篇讨论纯虚拟类可以做什么和不能做什么的文章。将它们用作参数的独立类型似乎不是其中之一。
-
嗯,不是按值,但你当然可以通过指针或引用。
-
@NullUserExceptionఠ_ఠ 概念根本不像接口。接口在运行时运行并且关注多态性,而概念是编译时特性并且都是关于模板的。唯一真正的相似之处是他们使用代码指定了某种“契约”,这真的没什么特别的。
-
@MichaelPrice 那么,什么是更接近 C++ 中接口的概念?