Gui*_*ira 10 c++ oop generic-programming c++-concepts
也在programmers.stackexchange.com上:
我知道STL概念必须存在,并且将它们称为"类"或"接口"是愚蠢的,而实际上它们只是文档化(人类)概念,当时无法转换为C++代码,但是当有机会扩展语言来容纳概念时,他们为什么不简单地修改类和/或引入接口的功能?
是不是一个非常类似于接口的概念(100%抽象类没有数据)?通过观察它,在我看来接口只是缺乏对公理的支持,但也许公理可以引入C++的接口(考虑假设采用C++中的接口来接管概念),不是吗?我认为甚至可以轻松地将自动概念添加到这样的C++接口(自动界面LessThanComparable,任何人?).
Concept_map 与Adapter模式非常相似吗?如果所有方法都是内联的,那么适配器在编译时间之外基本上不存在; 编译器只是用内联版本替换对接口的调用,在运行时直接调用目标对象.
我听说过一种称为静态面向对象编程的东西,它实质上意味着在泛型编程中有效地重用面向对象的概念,从而允许使用大多数OOP的功能而不会产生执行开销.为什么不进一步考虑这个想法?
我希望这很清楚.如果你认为我不是,我可以改写这个; 请告诉我
OOP和Generic Programming,Predestination之间存在很大差异.
在OOP中,当您设计类时,您拥有了您认为有用的接口.它已经完成了.
另一方面,在通用编程中,只要类符合给定的一组要求(主要是方法,还有内部常量或类型),它就符合要求并可以使用.概念提议是关于形式化,以便在检查方法签名时可以直接进行检测,而不是在实例化方法体时.它还使得更容易检查模板方法,因为如果概念不匹配,某些方法可以在没有任何实例化的情况下被拒绝.
Concepts的优点是你不会受到Predestination的影响,你可以从Library1中选择一个类,从Library2中选择一个方法,如果它适合,你就是黄金(如果没有,你可以使用一个概念)地图).在OO中,每次都需要编写一个完整的适配器.
你说两者看起来很相似是对的.差异主要在于绑定的时间(以及Concept仍然具有静态分派而不是像接口那样的动态分派的事实).概念更加开放,因此更易于使用.