Concepts in C++0x

    C++0x提出一个新特性:Concepts。什么是Concep t?简单讲Concept就是对某个类或某段代码的一组“要求”。怎么解释呢?其实一直以来,“对类的要求”是以“实现某个接口”或以“从某个类继承”这些形式来体现的。例如开发一个COM组件,要求必须实现IUnknown等接口;再例如MFC中窗口类必须从CWin继承等等。这些形式的缺点,就是这些要求对类之间的结构是侵入性的,我们经常体会到这种侵入性给我们带来的烦恼,比如我们从业务角度已经定义了继承结构,而为了使用某个框架,又要求同样的类建立框架要求的继承关系或接口......如果要对系统做比较大的调整,更是让人头痛。所以Concepts的出现,就是为了以一种低侵入的方式来对类提要求,使得我们在组织类结构上简单、灵活。
    对C++来说,Concept对模板带来更大的好处。我们知道,要模板对参数类也是有“要求”的,而且提要求的方式比上面两种更显得隐秘和诡异。比如说 ,一个取最大值的模板函数要求输入的参数类具有"比较大小"的操作,如"< "操作符或"less_than()"之类的成员函数。如果传入一个不具有"比较大小"操作的类型,将会出现一大堆不知所 云的编译错误。换句话说,模板用一大堆不知所 云的编译错误来告诉你:你传入的参数类没达到它的“要求”。这是模板使用者的一大头疼。引入Concept功能之后,C++编译器将会根据Concept的说明来验证你的参数类是否实现了这个“Concept”,如果不,编译器将会直接明了地告诉你问题出在哪里。It's great, right?
    "Concept"概念的出现不仅解决这样的问题 ,更重要的是可能是对目前基于"继承结构"或"接口实现 "的类结构是个更好的替代结构。目前大多数库或框架的使用要求我们写的类必须从框架 提供的某个类继承,或实现框架要求的某个接口,在"类型"的角度"侵入"了我们写的代码,而"类型 "或类结构又恰恰是程序最重要的组织基础,因此从某个角度可以说 "扰乱"了我们程序的结构。而使用Concept,将使得程序结构非常 flexible,只要你的类符合一定要求,换句换讲就是符合某个 (或某些)Concept,就可以被框架所用,而不要求从某个类继承 或实现了某个接口,有点"不问出身,只问能力"的味道。
 
    我的随想:随着语言的发展,看得出"概念的分离"是一个重要的趋势 。动态语言,将类型和变量分离,带来不少好处(当然个人认为也有坏处);Interface,将接口和实现分离 ,使得面向对象方法更成熟;Concept,将"要求 "和类型分离,是一个exciting的特性。目前"类型"和"操作"是捆绑在一起的 ,确定了类型,这个类型所具有的操作也确定了。想象某一天,能够实现"类型"和"操作"的分离,并且编译器能够自动绑定"类型 "和"操作",比如说,我调用了某个类的操作save(),这个类本不具有save()操作,但编译器能够自动把这个操作添加到这个类上......wow!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值