首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++概念和接口之间有什么区别?

C++概念和接口之间有什么区别?
EN

Stack Overflow用户
提问于 2016-01-19 10:31:30
回答 2查看 511关注 0票数 4

我的理解是,C++库概念对于C++来说就像合拢与Java的接口一样(根据链接的源代码,概念是:命名的需求集)。

  1. 这个比喻对吗?
  2. C++接口(即具有纯虚拟方法的类)与C++库概念有什么不同?
  3. 一般来说,通过多重继承实现C++库概念是否等同于在Java中实现多个接口(该接口不具有多重继承)?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-19 11:14:13

  1. 这不是一个精确的类比,但概念类似于接口。只有纯虚拟成员函数的类更接近于Java接口。Java泛型可能更接近于C++概念,但它们的局限性要大得多。您只能使用它们来要求类型来继承特定的基类或接口(我可能错了)。Haskell类型类与C++概念非常相似。
  2. C++接口是一个类。实现接口意味着继承接口并实现纯虚拟成员函数。概念是一组需求。符合概念意味着一致性类符合所有需求。对于特定表达式的有效性(必须具有名为iterator的成员类型别名)或行为(i++必须等效于It ip=i; ++i; return ip;),可以有要求。 接口的继承可以而且必须在语言中定义,但是还没有正式指定概念的语言支持。语言支持已经被提出,但没有包括在当前(C++14)标准中。 继承是动态(运行时)多态,概念与模板结合使用,这是静态(编译时)多态。
  3. 不是同等的。动态多态性和静态多态性是完全不同的。
票数 2
EN

Stack Overflow用户

发布于 2016-01-19 10:47:20

  1. 不,这是错的。Java中的接口与C++中的接口相同(每个方法都是虚拟的纯类)。
  2. C++概念推断类功能,而不是C++接口定义类功能。
  3. C++概念与继承无关。概念决定了类可以做什么,而不是类应该如何实现。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34874429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档