emplate关键字表示。C++标准包含了一个巨大的模板类库,称为STL,用于支持一些特殊而有用的程序设计功能。
·OP:Object Pascal不支持模板。容器类通常被创建为TObject类对象的容器。
·Java:Java同样不支持模板。你可以使用对象容器,或采用其它类似的方法。
其它特殊特性
·特性描述:以下是其它一些我谈及的特性,它们不是基础特性,而且仅为一种语言所特有。
·C++:我已经提到了多重继承、虚基类和模板。还有一些另外两种语言所不具有的特性。C++支持操作符重载,而Java中支持方法重载。C++还允许程序员重载全局函数。你甚至可以重载类运算符,编写可能会在后台被调用的类型转换方法。C++的对象模型需要拷贝构造函数和赋值运算符重载,而其它两种语言则不需要,因为它们基于对象引用模型。
·Java:只有Java在语言中支持多线程。对象和方法支持同步机制(使用synchronized关键字):同一个类的两个synchronized方法不能同时运行。要创建一个新的线程只需从Thread类中派生新类,并覆盖run()方法。另一个方法是实现Runnable接口(这是建立多线程applet的常用方法)。我们已经讨论过了碎片回收程序。Java的另一个关键特性是代码兼容性,但是这并不是严格的与语言相关的。
·OP:Object Pascal的一些特性包括类引用,便利的方法指针(这是事件模型的基础),特别是属性。属性用来隐藏对数据成员的访问,这些访问大多是通过方法进行的。属性可以直接映射为对数据成员的读写操作,也可以映射为访问函数。即使改变了访问数据成员的方式,也不需要改变调用的代码(虽然需要重新编译),这使得属性称为了一个强大的封装特性。Java也将在1.1版中加入这个特性,以支持Java Beans。
标准
·特性描述:每个语言都需要有人建立一个标准,并检查是否所有的实现都符合这个标准。
·C++:ANSI/ISO C++标准委员会已经完成了标准化工作。大多数编译器编写者都努力遵守这个标准,虽然还有很多的差异存在。理论上的发展已基本停止。但在实现上,新的Borland C++ Builder虽然并不很成熟,但使很多人认识到C++迫切的需要一个可视开发环境。同时,广为流行的Visual C++将C++向另一个方向发展起来,例如,大量使用宏。我的意见是,每个语言都有它的开发模型,在不适于某种语言的环境下强行使用这种语言是毫无意义的。
·OP:Object Pascal是一个私有语言,所以没有标准。Borland已经授权给一些OS/2编译器开发商,但是没有什么效果。在每一个新版本的Delphi中,Borland都扩展了这种语言。
·Java:Java也是私有语言,并且拥有一个同名的商标。但是Sun更愿意授权给其它编译器开发商。Sun自己控制着这种语言,并且好像并不想为其建立一个官方的标准,至少目前如此。Sun也在极力避免不遵守标准的虚拟机被开发出来。