AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Frage an die Cracks: erben

Ein Thema von Popov · begonnen am 16. Nov 2012 · letzter Beitrag vom 16. Nov 2012
Antwort Antwort
Seite 2 von 2     12   
Perlsau
(Gast)

n/a Beiträge
 
#11

AW: Eine Frage an die Cracks: erben

  Alt 16. Nov 2012, 10:09
Muss man das nicht trennen nach Feldern und Methoden? Sprich was passiert bei Vererbung mit Feldern, sprich welcher Speicher wird wo wofür reserviert! Und wie werden die Methoden zugeordnet? Gibt es da nicht irgendwelche Tabellen (Mir schwirrt aus der Schule noch das Stichwort Method-Table im Kopf rum) wo (vom Compiler?) geguckt wird, welche Methode gerade gefragt ist (Polymorphie)?
Ich glaube nicht, daß ich genau wissen möchte, welcher Speicher wann, wo und wofür reserviert wird, dazu ist die Speicherverwaltung von Delphi für meine Verhältnisse einfach zu komplex. Soweit ich aber weiß, wird genau die Speichergröße reserviert, die für die Referenzen auf das Eltern-Objekt notwendig ist. Gibst du neue Methoden oder Properties ein, wird entsprechend weiterer Speicher reserviert, dito auch beim Überschreiben von Methoden und Properties. Alles, was darüber hinausgeht, hält mich nur vom Arbeiten ab , deshalb klinke ich mich jetzt hier auch wieder aus.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Eine Frage an die Cracks: erben

  Alt 16. Nov 2012, 10:25
Methoden(properties) sind grundsätzlich nur Zeiger, egal ob die Methode geerbt ist oder nicht.
http://docwiki.embarcadero.com/RADSt...e_Datenformate

Mach dich mal nach der VMT schlau
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: Eine Frage an die Cracks: erben

  Alt 16. Nov 2012, 10:32
Muss man das nicht trennen nach Feldern und Methoden? Sprich was passiert bei Vererbung mit Feldern, sprich welcher Speicher wird wo wofür reserviert! Und wie werden die Methoden zugeordnet? Gibt es da nicht irgendwelche Tabellen (Mir schwirrt aus der Schule noch das Stichwort Method-Table im Kopf rum) wo (vom Compiler?) geguckt wird, welche Methode gerade gefragt ist (Polymorphie)?
Nein, aber man muss unterscheiden zwischen einer Klasse und einer Instanz.

Die Instanz ist ein Speicherbereich, der mit dem "Klassenstempel" eine besondere Struktur bekommt. Das war es schon.
Die Methoden werden wie eine procedure einfach ausgeführt (der einzige Unterschied ist das Mitführen von Self einer Referenz auf die eigene Instanz => Speicherbereich)

Greift man innerhalb der Methode nicht auf die Instanz zurück, so kann man diese auch einfach aufrufen.

Delphi-Quellcode:
TFoo = class
private
  FValue : Integer;
public
  function Calc( a, b : Integer) : Integer; overload;
  function Calc( a : Integer ) : Integer; overload;
end;

function TFoo.Calc( a, b : Integer ) : Integer;
begin
  Result := a + b;
end;

function TFoo.Calc( a : Integer ) : Integer;
begin
  Result := Calc( a, FValue );
end;

var
  LFoo : TFoo;
begin
  LFoo.Calc( 3, 4 ); // Keine AV obwohl es keine Instanz gibt
  LFoo.Calc( 3 ); // es gibt eine AV, weil in der Methode auf die Instanz zugegriffen wird
end;
Was allerdings gleich ist, sind Klassenvariablen, die werden nicht geklont, sondern die sind in jeder Ableitung da und vor allem gleich!

Delphi-Quellcode:
TFoo = class
  class var _Value : Integer;
end;

TFoo2 = class( TFoo )
end;

begin
  TFoo._Value := 42;
  Assert( TFoo._Value = TFoo2._Value );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#14

AW: Eine Frage an die Cracks: erben

  Alt 16. Nov 2012, 10:39
Zur VMT und DMT hat sirius in diesem Thread eine IMO sehr gute und ausführliche Beschreibung geschrieben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz