C ++“概念”在哪些方面比ObjC协议和Java接口更好或更差?
答案 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