AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Operator Overloading in einer Klasse?

Ein Thema von Meflin · begonnen am 12. Mai 2006 · letzter Beitrag vom 14. Mai 2006
Antwort Antwort
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Operator Overloading in einer Klasse?

  Alt 12. Mai 2006, 20:18
Aloa!

Wenn D2006 die Möglichkeit nun schon bietet, würde ich doch gerne mal aufs operator overloading zurückgreifen

Folgendes funktioniert auch:
Delphi-Quellcode:
  TPseudoNumber = record
    class operator Add(a: TPseudoNumber; b: Cardinal): TPseudoNumber;
  end;
Allerdings brauche ich keinen record, sondern eine Klasse, und folgendes funktioniert nicht:
Delphi-Quellcode:
  TPSeudoNumber = class
    class operator Add(a: TPseudoNumber; b: Cardinal): TPseudoNumber;
  end;
Nicht wenn mans so macht, nicht wenn mans in den public Teil steckt, einfach garnie Er spuckt immer den Fehler "[Pascal Fehler] BFDefs.pas(67): E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet" aus.

Meine Frage: kann es wirklich sein, dass man das nur in records verwenden kann? Das wäre ja oberst blöde.

  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Operator Overloading in einer Klasse?

  Alt 12. Mai 2006, 21:07
Hallo Meflin,

die Online-Hilfe hat für deine Frage folgende Antwort:

Zitat von Online-Hilfe:
Delphi für .NET und Delphi für Win32 ermöglicht es, bestimmte Funktionen, auch "Operatoren" genannt, innerhalb von Record-Deklarationen zu überladen. Delphi für .NET lässt außerdem das Überladen in Klassendeklarationen zu.
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Operator Overloading in einer Klasse?

  Alt 14. Mai 2006, 13:07
sehr schade allerdings stellt sich da mir die frage: sinn, wo bleibst du?

  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Operator Overloading in einer Klasse?

  Alt 14. Mai 2006, 14:01
Zitat von Meflin:
sehr schade allerdings stellt sich da mir die frage: sinn, wo bleibst du?
frag das Borland
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Operator Overloading in einer Klasse?

  Alt 14. Mai 2006, 14:31
Zitat von Meflin:
sehr schade allerdings stellt sich da mir die frage: sinn, wo bleibst du?
Das ist mehr Notwendigkeit als Sinn.
Bei überladenen Operatoren werden neue Objekte angelegt, die "Addition" zweier Objekte ergibt ein neues Objekt. Records sind Werttypen, die auf dem Stack liegen -> wird die Prozedur abgearbeitet, ist der Speicher frei. Bei Delphi.NET gibt es eine GC, also auch wunderbar.

Bei Delphi.W32 aber gibt es keine GC, ein Objekt, das durch die Anwendung eines überladenen Operators implizit erzeugt würde, müsste vom Aufrufer freigegeben werden. Und wenn das immer machen würde, würde man das, was man durch Operatorüberladung an Code-Lesbarkeit gewinnt, durch die ständigen Free-Aufrufe wohl mehr als verlieren.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf