![]() |
Zitat:
Code:
typedef struct tagMYSTRUCT {
int a, b; } MYSTRUCT; void main() { MYSTRUCT st1; st1.a = 10; // ein direkter Zugriff ist hier möglich. MYSTRUCT *st2 = new MYSTRUCT; st2->a = 20; // hier muss der Zeiger dereferenziert werden delete st2; } |
Hm... verstanden, aber dennoch komisch, denn man nehme sich folgendes Beispiel:
Delphi-Quellcode:
Da verstehe ich das nicht, da man hier ja nicht ^. schreibt...
// Borland C++-Builder (1)
Application->MessageBox( /* ... */); // Borland Delphi (6) Application.MessageBox( {...} ); // Dev-C++ // Gibt's hier nicht... Chris |
Hi Chakotay,
in Delphi werden Objekte, z.B. TApplication, als Referenz benutzt, d.h. du greifst immer über einen Poiter auf das Objekt zu, nur dass der Compiler das für dich vertuscht, da dieses Verhalten nur intern so läuft (aber es sorgt dafür, dass du, wenn du Objekte an Funktionen übergibst, auch wirklich auf die Obbjekte zugreift, die du haben willst). Um das mal in Code umzusetzen:
Delphi-Quellcode:
MfG,
var
Application: TApplication; // Zugriff Application.MessageBox(...); // wird intern so behandelt: var Application: ^TApplication; // interner Zugriff Application^.MessageBox(...); // in C++ sähe das gleich so aus: TApplication *Application; Application->MessageBox(...); d3g |
Nicht zuviel erzählen, sonst steige ich wirklich noch auf C++ um *g*
|
Übrigens gibt es, falls du den Punkt lieber magst als den Pfeil, in C++ auch Referenzen:
Code:
Referenzen werden in C++ aber typischerweise nur für die Parameterübergabe benutzt. Sie sind sicherer, weil sie immer auf ein genau definiertes Objekt verweisen, während ein Zeiger ja auch wild um sich schießen kann mit seinen Adressen. Was ja auch oftmals Neulinge in C verzweifeln lässt, weil sie sehr früh damit konfrontiert werden, im Gegensatz zu Object Pascal, speziell Delphi, das wie gesagt mehr auf Referenzen setzt.
TApplication Application;
/* ... */ TApplication& App = Application; App.MessageBox(/* ... */); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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