我的理解是C++ library concept对于C ++来说像Closeable这样的接口是Java(根据链接源,概念是:命名的需求集)。 / p>
答案 0 :(得分:1)
这不是一个完全类比,但概念类似于接口。仅具有纯虚拟成员函数的类与Java接口的类比更接近。 Java泛型可能是与C ++概念更接近的类比,但它们更受限制。您只能使用它们来要求类型继承特定的基类或接口(我可能是错的)。 Haskell类型类与C ++概念非常类似。
C ++接口是一个类。实现接口意味着继承接口并实现纯虚拟成员函数。概念是一组要求。符合概念意味着符合要求的类符合所有要求。可能存在特定表达式有效性的要求(必须具有名为iterator
的成员类型别名)或行为(i++
必须等同于It ip=i; ++i; return ip;
)。
接口的继承可以而且必须在语言中定义,但是还没有正式指定概念的语言支持。已提出语言支持,但未包含在当前(C ++ 14)标准中。
继承是动态(运行时)多态,而概念与模板一起使用,这是静态(编译时)多态。
不相同。动态和静态多态性是完全不同的东西。
答案 1 :(得分:0)
不,这是错的。 Java中的接口与C ++中的接口相同(每个方法都是虚拟纯的类)。
C ++概念推断类功能而不是C ++接口定义类功能。
C ++概念无法处理继承。概念决定了一个类可以做什么,而不是一个类应该如何实现。