delphi中支持操作符重载吗?(100分)

  • 主题发起人 主题发起人 吴联银
  • 开始时间 开始时间

吴联银

Unregistered / Unconfirmed
GUEST, unregistred user!
c++中操作符重载十分方便,但delphi好象不支持。请问,有手段解决吗?否则,诸如向量、矩阵运算等问题将十分麻烦,请高手指点。如果有向量、矩阵运算等数学库,望能提供,帮小弟一把。谢谢!
e_mail:wulianyin@263.net
 
Turbo Pascal 6.0 关于OOP技术就支持操作符重载,当然Delphi也应支持,只不过
方法不对吧?
 
Jams, 你记错了吧.

吴联银 : 用函数代了吧.

例如 c:=A+b 你只有用 C:= Add(A,B);
不知道Delphi 5中有没有操作符重载,

好在 delphi 4 支持同名函数重载. 你可同时声明

Function Add(const A,b : Type1) :Type1
Function Add(const A,b : Type2) :Type2
Function Add(const A,b : Type3) :Type3

Delphi 会根据不同的数据类型选择不同的Add函数.

我想这个并不麻烦.
 
cj, 好象要加上overload关键字才能实现重载吧?
Function Add(const A,b : Type1) :Type1
Function Add(const A,b : Type2) :Type2
overload;
Function Add(const A,b : Type3) :Type3
overload;
 
Delphi 5也不支持操作符重载, 实际上操作符重载之后经常会引起混乱,
也会降低编译器的效率

关于操作符重载引起混乱的例子我有一个教训如下:
这个例子是Visual C++写的:
CString是VC里面一个很好用的字符串类, 支持+号的重载,
可以在字符串后面加上自负, 字符串, CString对象等等。
下面是一段代码:

CString strResult, strTest;
strTest = "Everything";
strResult = '/n' + strTest + " is ok."
//前面添了一个空行

结果是: strResult中有字符串: “Everything is ok."
后来因故不再需要中间变量strTest,

CString strResult;
strResult = '/n' + "Everything is ok.";

结果是什么? (呵呵, 是" ok.");
 
Delphi支持函数重载,用overload关键字,如Another_eYes所示,好象不支持操作
符重载,另外Delphi4.0支持多态性,不知Delphi5.0在面向对象方面又有什么新的
改进。
 
多谢各位大虾的指点!不过好象依然没有解决我所提出的问题————操作符重载!!
Another_eYes大虾提出的方案当然是一种解决办法,但是用起来很不方便,尤其是对于表达式非常长的时候,不得不引入一些中间变量,仅仅停留在函数重载的层次。
不知哪位大虾对Delphi 5有研究,敢问在Delphi 5中有操作符重载吗?,
 
解决问题有两个方面:我们给你的否定的回答也是对问题的解决呀!:)
Pascal语言为了高效实现而简化了C++中的许多东西,我觉得C++已经被弄
得太。。。了
 
请继续讨论或结束此问题!
 
eYes:管CJ什么事?我没说呀?既然你说了,我就给个答案:
不支持操作符重载!
方法异构在D4中有支持,D4的另外新特性包括动态数组,还有一个忘记了,呵呵
 
什么好象不支持,肯定地,不支持。所以c++和delphi是各有千秋啊,我以前是用
c++,现在是用delphi,感觉c++就是比delphi稍胜一筹。
 
支持pegasus的说法,我不喜欢操作符重载,没什么很大的意义,却会降低性能
 
虽然会降低编译器的编译速度,但可以增加可读性,而且很灵活,我喜欢C++的操作符重载。
 
你最好别在DELPHI中打这个主意,DELPHI之所以优秀,就是因为它结合了PASCAL与
面向对象的优点,同时对面向对象中的一些东西进行了简化。若你一定要使用重载
操作符,试一下C++BUILDER算了,这正如你让DELPHI去搞多重继承一样,何必呢?
 
C++有C++的优点,Delphi有Delphi的好处。
算术符重载在C++里是一个优点,也是一个缺点。简化了
程序,却增加了编译的麻烦。
Delphi中不支持算术符重载,这是毫无疑问的。但可以有
变通的方法。
 
我觉得可读性并没有因为操作符的重载而有什么很大的改变,个人感觉
不过我用C++的时候有时候就会用到它,(既然有了,不用白不用,:)
然而用的时候可读性常常不但没有提高反而略有下降,可能是因为我的
程序从来都没有涉及到专业的数学领域中,+, - * / = 等等本来数学
意义就没有多少,所以重载了之后没有什么可读性的提高,:(

注意程序简短了并不意味着可读性的提高
 
在数学领域编程的话,如果能够进行操作符重载,用起来的确是不错的。这时用C++
就是的啦,何必用DELPHI。
 
Delphi不支持操作符重载,
也没必要支持。
 
C++的OOP机制过于烦杂,Delphi虽有许多与C++类似之处,但已经去掉了如操作符重载等易引起混乱的机制。Java语言也是如此,而且还去掉了全局变量......使之更加简洁。所以我觉得操作符重载没有必要。
 
关于复数运算,倒是在Delphi Forever 可以找到TComplex控件,是用2.0版本写的,没有源代码。我很想利用,却装不成功,如果你能够装载成功,请转告我一下。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部