D - Operator Overloading
- Bruno A. Costa (8/8) Apr 27 2004 Hi all,
- Stewart Gordon (9/16) Apr 27 2004 It seemed straightforward to me LTIL. Anywhere particular that you're
- Bruno A. Costa (11/24) Apr 27 2004 I just couldn't understand how to write the code. Maybe I am too tied to...
-
Stewart Gordon
(11/16)
Apr 28 2004
- Unknown W. Brackets (14/18) Apr 28 2004 I think the difference is this: in C++, operators could be, and indeed
- FlyTox (8/20) Apr 27 2004 I have to confess I do not understand what was wrong with the C++
Hi all, Someone has links to examples of operator overloading in D? I read the specification, but I was not able to understand it correctly. I noticed that D doesn't have the operator keyword. I think that this keyword gives more flexibility and power than the simple use of functions (opCmp, opEquals etc). IMHO, it should be added in D. Thanks, Bruno.
Apr 27 2004
Bruno A. Costa wrote:Hi all, Someone has links to examples of operator overloading in D? I read the specification, but I was not able to understand it correctly.It seemed straightforward to me LTIL. Anywhere particular that you're having trouble?I noticed that D doesn't have the operator keyword. I think that this keyword gives more flexibility and power than the simple use of functions (opCmp, opEquals etc). IMHO, it should be added in D.So you can bend the semantics as much as you like? Stewart. -- My e-mail is valid but not my primary mailbox, aside from its being the unfortunate victim of intensive mail-bombing at the moment. Please keep replies on the 'group where everyone may benefit.
Apr 27 2004
Stewart Gordon wrote:I just couldn't understand how to write the code. Maybe I am too tied to the c++ syntax. But I am looking to the example from J C Calvarese (http:/ www.dsource.org/tutorials/index.php?show_example=43) and things are becoming more clear.Someone has links to examples of operator overloading in D? I read the specification, but I was not able to understand it correctly.It seemed straightforward to me LTIL. Anywhere particular that you're having trouble?With the operator keyword I can write ONLY the overloadings I want. With opCmp() I overload all comparison operators. Obviously this approuch has pros and cons. I would like to have both in a language - opFunctions and operator keyword. Thanks, Bruno.I noticed that D doesn't have the operator keyword. I think that this keyword gives more flexibility and power than the simple use of functions (opCmp, opEquals etc). IMHO, it should be added in D.So you can bend the semantics as much as you like?
Apr 27 2004
Bruno A. Costa wrote: <snip><snip> If you're going to implement a less than comparison, to me it seems pointless to go out of your way not to have greater than comparison to match. And similarly <= and >=.... Stewart. -- My e-mail is valid but not my primary mailbox, aside from its being the unfortunate victim of intensive mail-bombing at the moment. Please keep replies on the 'group where everyone may benefit.So you can bend the semantics as much as you like?With the operator keyword I can write ONLY the overloadings I want. With opCmp() I overload all comparison operators. Obviously this approuch has pros and cons.
Apr 28 2004
Bruno A. Costa wrote:With the operator keyword I can write ONLY the overloadings I want. With opCmp() I overload all comparison operators. Obviously this approuch has pros and cons. I would like to have both in a language - opFunctions and operator keyword.I think the difference is this: in C++, operators could be, and indeed were, logically misused. By this, I mean that the + operator might be used for removing something, for all you might know. Now, it sounds to me if you only want to write one operator, this is what you're looking to do. If you were planning to keep the operators logical, it would only follow that you need all the operators. Part of D is making usable, self documenting code. If + means anything but add, if < means move or something... it doesn't achieve the above purpose. For those classes using operators for the purposes they were meant for, having only to do a percentage of overloads makes it easier and better, not worse. -[Unknown]
Apr 28 2004
I have to confess I do not understand what was wrong with the C++ syntax. I find it oakward to type "opAddAssign" rather than "+=". Eventually the compiler calls opAddAsign when it reaches +=; what is the benefit of such a name discrepancy? Sorry I may not get the point but as far as I understand, this D operator replacement achieves exactly the same as C++. Why changing things when there is no additional benefit? Just to give D an identity? Bruno A. Costa wrote:Hi all, Someone has links to examples of operator overloading in D? I read the specification, but I was not able to understand it correctly. I noticed that D doesn't have the operator keyword. I think that this keyword gives more flexibility and power than the simple use of functions (opCmp, opEquals etc). IMHO, it should be added in D. Thanks, Bruno.
Apr 27 2004
In article <c6m4i3$2829$1 digitaldaemon.com>, FlyTox says...I have to confess I do not understand what was wrong with the C++ syntax. I find it oakward to type "opAddAssign" rather than "+=". Eventually the compiler calls opAddAsign when it reaches +=; what is the benefit of such a name discrepancy? Sorry I may not get the point but as far as I understand, this D operator replacement achieves exactly the same as C++. Why changing things when there is no additional benefit? Just to give D an identity?This was before my time here but I believe that it was discussed on this new group and the consensus was the new version. Maybe you can find the discussions on the group. Why not move this discussion to the new group? Ant
Apr 27 2004
"FlyTox" <rox271 hotmail.com> wrote in message news:c6m4i3$2829$1 digitaldaemon.com...I have to confess I do not understand what was wrong with the C++ syntax. I find it oakward to type "opAddAssign" rather than "+=". Eventually the compiler calls opAddAsign when it reaches +=; what is the benefit of such a name discrepancy?Consider the ++ operator, and the kludges C++ uses to distinguish pre from post increment.Sorry I may not get the point but as far as I understand, this D operator replacement achieves exactly the same as C++. Why changing things when there is no additional benefit? Just to give D an identity?There's quite a bit of benefit. For example, a single D function opCmp replaces 8 C++ functions a<b, a<=b, a>b, a>=b, b<a, b<=a, b>a, b>=a. I'd rather write and debug just one.
May 07 2004
"Walter" <newshound digitalmars.com> wrote in message news:c7fhga$2gs2$1 digitaldaemon.com..."FlyTox" <rox271 hotmail.com> wrote in message news:c6m4i3$2829$1 digitaldaemon.com...Never mind the evil inconsistencies between compilers which either, correctly, fail to compile an expression with one or the other that is not provided by a UDT, and those that simply insert the other. Nasty stuff.I have to confess I do not understand what was wrong with the C++ syntax. I find it oakward to type "opAddAssign" rather than "+=". Eventually the compiler calls opAddAsign when it reaches +=; what is the benefit of such a name discrepancy?Consider the ++ operator, and the kludges C++ uses to distinguish pre from post increment.Sorry I may not get the point but as far as I understand, this D operator replacement achieves exactly the same as C++. Why changing things when there is no additional benefit? Just to give D an identity?There's quite a bit of benefit. For example, a single D function opCmp replaces 8 C++ functions a<b, a<=b, a>b, a>=b, b<a, b<=a, b>a, b>=a. I'd rather write and debug just one.
May 07 2004