(ps:java和delphi一样不支持多重继承,也使用interface来实现多重继承。其实这并不奇怪:jdk 1.2和java 2主要是由borland开发的,sun只挂名而已。不信你看java类库是不是和vcl很象。:-)
(8) 对象模板
object pascal不支持对象模板。因为对象模板不过是宏的语言实现而已(宏本身不是
c/c++的语言特性)。
(9) 重载
object pascal支持函数/过程的重载,不支持运算符重载。c++全部支持。
(ps:我个人倾向于object pascal应该增加对运算符重载的支持)
(10) 位及逻辑操作
object pascal和c/c++在这方面没什么差别。
c/c++的&,|,~,^,>>,<<,&&,||,!等效于object pascal的and,or,not,xor,shr,shl(and,or,not,xor既用于位操作也用于逻辑操作)。不过c/c++不支持逻辑xor(a xor b = a and not b or not a and b,还是可以实现的)。
(11) 风格
其实这是我更倾向于使用delphi的一个重要原因(由于工作的原因,我也经常使用c++和汇编)。就象有些文章所说的:“object pascal和c++是同一重量级的语言”,确实难分轩轾,差别反而主要是在风格上。c++强调灵活,而object pascal更注重整洁和优美。《程序设计语言:设计与实现》一书的作者也称赞pascal是“一种极优美的语言”。有人因此认为pascal“笨拙”。其实应该是“大道至简”。我认为即使用c++写程序也还是工工整整的好,不要卖弄技巧。只有水平不高不低的程序员才喜欢卖弄技巧(水平太低的卖弄不了,太高的又不愿卖弄了)。就象有人评李昌镐的棋“平淡”,但马晓春再怎么“鬼才”也只能甘拜下风。
上面说的其实都是c++ vs object pascal。不过也适用于vc++ vs delphi。
(ps:vc++其实并未实现全部ansi/iso c++ 95规范(目前的最新标准)的特性(所以有人戏称之为c+)。而c++ builder则完全兼容ansi/iso c++ 95规范,并支持at&t(c的诞生地)和unix v的全部c++扩展特性。有人称“m$坚持工业标准,borland随意修改”,这是不对的。delphi也全兼容ansi/iso pascal 1983/92规范,以及apple object pascal(用过code warrior professional的应该知道apple的object pascal)。)
3. 功能及其他
文章来源于领测软件测试网 https://www.ltesting.net/