AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu "absolute"

Ein Thema von DevilsCamp · begonnen am 17. Mär 2009 · letzter Beitrag vom 17. Mär 2009
Antwort Antwort
DevilsCamp
(Gast)

n/a Beiträge
 
#1

Re: Frage zu "absolute"

  Alt 17. Mär 2009, 13:01
Habe folgendes getestet (mit Freepascal, Delphi steht mir im Moment nicht zur Verfügung):
Delphi-Quellcode:
program hilfe;

{$mode objfpc}{$H+}

uses SysUtils, Classes;

type
  TKla1 = class
  public
    Feins: Longint;
  end;
  
  TKla2 = class(TKla1)
  public
    Fzwei: Longint;
  end;
  
  TKlasse1 = class
  public
    Ftest: TKla1;

    constructor Create;
    destructor Destroy; override;
  end;
  
  TKlasse2 = class(TKlasse1)
  public
    function GetTest: Longint;
  end;

constructor TKlasse1.Create;
begin
  Ftest := TKla1.Create;
  Ftest.Feins := 10;
end;

destructor TKlasse1.Destroy;
begin
  Ftest.Free;
  
  inherited Destroy;
end;

function TKlasse2.GetTest: Longint;
var
  ei: TKla2; // absolute Ftest;
begin
  ei := TKla2(Ftest);
  Ftest.Feins := 20;
  Result := ei.Feins;
end;
  
var
  bla: TKlasse2;
begin
  bla := TKlasse2.Create;
  WriteLn(Format('Test = %d', [bla.Ftest.Feins]));
  WriteLn(Format('Test = %d', [bla.GetTest]));
  WriteLn(Format('Test = %d', [bla.Ftest.Feins]));
  bla.Free;
end.
Als Ergebnis bekomme ich:
Code:
Test = 10
Test = 20
Test = 20
Ersetze ich die Methode TKlasse2.GetTest durch:
Delphi-Quellcode:
function TKlasse2.GetTest: Longint;
var
  ei: TKla2; // absolute Ftest;
begin
  ei := TKla2(Ftest);
  ei.Feins := 20;
  Result := FTest.Feins;
end;
dann erhalte ich ebenfalls
Code:
Test = 10
Test = 20
Test = 20
Das Typecasting verhält sich (zumindest bei diesem Test) genauso wie es sich mit absolute verhalten sollte.
Allerdings habe ich jetzt nicht getestet, wie es mit Typen aussieht, die keine Objekte sind (z.B. Double <-> Int64).
  Mit Zitat antworten Zitat
Antwort Antwort


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