C ++“概念”与ObjectiveC“协议”和Java“接口”相同吗?

时间:2015-08-18 05:32:47

标签: java c++ objective-c c++11

C ++“概念”在哪些方面比ObjC协议和Java接口更好或更差?

1 个答案:

答案 0 :(得分:5)

首先,这个答案比我的好: How do Concepts differ from Interfaces?

无论如何,我在检查重复之前的原始内容:

这有点像询问一条面包是否比快艇更好或更差。

C ++" Concepts"适用于通用类型函数和类中使用的类型参数的约束(模板)。

协议和接口指定采用/实现类(通用或其他)必须实现的方法。

C ++已经具有协议和接口的模拟,这些类只包含纯虚函数:

https://en.wikipedia.org/wiki/Virtual_function#Abstract_classes_and_pure_virtual_functions

我可以看到混乱的根源;在最抽象的层面上,概念,接口和协议都与指定行为同时避免实现有关;但是在语言中使用它们的根本不同,所以你无法进行真正的比较。

此外,你的问题非常需要重写,以便它有一个真正的答案,而不是编辑或挥手或放牧或养羊,无论我做什么。

此外,概念还处于初期阶段,仅处于C ++标准的建议阶段:http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4361.pdf

"现在它只是一个概念,但我想我可以把钱变成一个概念,然后把它变成一个想法。" - Annie Hall