Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Vergleich</strong> <strong>von</strong> <strong>Delphi</strong> <strong>und</strong> <strong>Visual</strong> <strong>C++</strong> - Kapitel 2B<br />
"variable ... used without having been initialized" <strong>und</strong> <strong>Delphi</strong> teil dem Entwickler mit, daß "die Variable ... wahrscheinlich nicht initialisiert wurde".<br />
Mögliche Geltungsbereiche <strong>von</strong> Variablen sind globale <strong>und</strong> lokale (Block-) Gültigkeit. Blöcke bestehen aus Deklarationen <strong>und</strong> Anweisungen. Der<br />
globale Gültigkeitsbereich wird in <strong>C++</strong> durch den sogenannten externen Gültigkeitsbereich (external scope) gebildet, der alle Funktionen in einem<br />
Programm umfaßt. In Pascal wird der globale Gültigkeitsbereich durch den globalen Block gebildet.<br />
Lokale Blöcke werden z.B. durch Prozedur-, Funktions- <strong>und</strong> Methodendeklaration gebildet. Variablen, die innerhalb solcher Blöcke definiert werden,<br />
heißen lokale Variablen <strong>und</strong> werden im Stack einer Anwendung abgelegt. Der Stack wird mitunter auch Stapel genannt. Er bezeichnet einen<br />
Speicherbereich, der für die Speicherung lokaler Variablen reserviert ist. Der Gesamtbedarf an Speicherplatz im Stack ergibt sich aus der Summe des<br />
Einzelbedarfs sämtlicher Funktionen <strong>und</strong> Prozeduren, die zu einem gegebenen Zeitpunkt gleichzeitig aktiv sein können. Der Bedarf an Stack-Speicher<br />
ist bei rekursiven Funktionsaufrufen besonders groß; die Gefahr eines Stack-Überlaufs besteht, wenn der Stack nicht genügend groß dimensioniert<br />
wurde.<br />
Der Gültigkeitsbereich einer Variablen wird dadurch bestimmt, in welchem Block sie definiert wurde. Variablen sind im aktuellen Block <strong>und</strong> in allen,<br />
diesem Block untergeordneten Blöcken gültig, solange im untergeordneten Block nicht eine Variable mit gleichem Namen definiert wurde. In dem Fall<br />
wird sie <strong>von</strong> der neuen, gleichnamigen Variablen "verdrängt" <strong>und</strong> ist bis zum Blockende nicht mehr sichtbar.<br />
Gemeinsam ist beiden Sprachen, daß Variablen definiert werden müssen, bevor sie benutzt werden können (declaration-before-use). Von dieser<br />
Einschränkung abgesehen, gestattet <strong>C++</strong> die Variablen-Definition an beliebiger Stelle im Quelltext (on-the-spot variables), während Pascal zwingend<br />
vorschreibt, daß Variable für jeden Gültigkeitsbereich in einem gesonderten Abschnitt, der mit dem Schlüsselwort var eingeleitet wird, definiert werden<br />
müssen. Der Entwickler wird dadurch zu einer gewissen Disziplin gezwungen. Dagegen können die Variablen in <strong>C++</strong> beliebig verstreut im Text<br />
auftauchen. Andererseits kann es bei größeren Blöcken vorteilhaft sein, wenn die Variablen erst dort definiert werden, wo sie tatsächlich gebraucht<br />
werden. Ihr Zweck ist dadurch in <strong>C++</strong> sofort erkennbar <strong>und</strong> muß in Pascal durch geschickte, selbsterklärende Namenswahl verdeutlicht werden. Die<br />
Gültigkeit einer Variablen endet in beiden Sprachen mit dem Blockende, in dem sie definiert wurde.<br />
V<strong>C++</strong><br />
Object Pascal<br />
int x;<br />
// globale Variable<br />
var x: Integer;<br />
// globale Var.<br />
void Test()<br />
{<br />
int i; // lokale Variable<br />
i = 3;<br />
for (int m=1; m