读书人

[讨论]泛型模板是为了补充C++对象系统

发布时间: 2012-03-17 19:06:28 作者: rapoo

[讨论]泛型模板是为了补充C++对象系统抽象能力的破缺?
类是对一组对象特征的抽象,对象的特征用成员变量来描述 对象的行为用成员函数来描述。
但是 有些对象 他们尽管有共同特征 却无法用成员来描述,就像数组,所有数组唯一的不同之处是 他们接受不同的类型,但是 类型在程序运行时时无法识别的,因为编译之后的C++代码没有 "类型 "这一概念。
所以,必须用模板这样的编译时技术来解决,如果这样考虑,所谓的“泛型很优雅”大概就只是自己欺骗自己的说法了。只是 强类型 这种方式跟oo矛盾的一种补救方式而以。

请大家随便谈谈

[解决办法]
我觉得是另一种编程的 思维.和OO没有什么相似的地方.
基于接口的编程思想.
[解决办法]
泛型编程在某些方面比面向对象更灵活,特别,它不依赖于继承体系
[解决办法]
just up
[解决办法]
支持
[解决办法]
实际有用就好..
[解决办法]
GP是高楼的钢筋结构,OO是房间的砖头。
现实中,对于任何一个设计,都必须有一个明确的结果,所以楼主说的需要运行期间进行处理类型,是一种反现实的玩意。
[解决办法]
BS初衷就不是将C++变成一个OO语言,他野心太大,要一个所有方法的集合,所以不能说GP是OO的附属或者什么补丁,OO模型本身存在很多问题和疑难,包括单根性是否好的问题都是争论的焦点
只是因为GP和OO的正交很差,所以看似OO有先入为主而GP是辅助
其实在STL里面没有用到虚函数多态,它就是一个MUTHI-方法的产物,有OO的模型和GP的意思。
不过目前很多时候GP还是很晦涩的,由于烦琐的代码而没有被广泛应用广泛了解,这点从BOOST里面可以看到
总之GP还不那么成熟,还在成长中,但是最终怎么也不会成为OO的小弟。
CONCEPT CHECKING的东西不正在ISO里面躺着吗??
[解决办法]
up,楼下继续,我最他妈爱看这类贴了。吵吧,越吵我越明白
[解决办法]
泛型也可以看成是一种新的编程思想

只不过在C++平台上设计出来了
[解决办法]
泛型是符合数学研究的结论的。
因为我们永远也无法给任何东西下一个精确的定义,只能是用一系列的特征来描述某样东西。所以,泛型反而更直接体现这种思维模式。
oo是定义,泛型是描述,这就是区别。
[解决办法]
OO是不万能的,哪怕再好的OO支持。

[解决办法]
泛型模板是为了补充面向对象系统抽象能力的破缺。任何面向对象语言都存在这个问题。
泛型的基础理论最早出现于1967年,没有比面向对象晚多少。C++的模板原始思路来源于Ada,但却采用了不同于Ada泛型的机制。目前看来这种机制更加灵活。
类是“一组对象特征的抽象”,那么泛型(模板)就是对“一组类和函数特征的抽象”。泛型编程解决了另一个面向对象没有能够坚决的问题,就是对算法的抽象。
类所解决的是抽象数据类型(ADT)问题,也就是对数据类型的抽象。而泛型编程则是建立在过程和类两种机制之上的一种更高抽象层次的技术。过程和对象就好比泛型编程的两条腿,起到支撑作用。而泛型编程则提供了更强的抽象功能。
目前,泛型编程的主要问题是泛型(模板)还仅仅只是一种静态的编译时机制,无法处理动态的运行时问题。或许将来,随着技术的发展,我们可以看到动态的泛型编程机制。

读书人网 >C++

热点推荐