05.11.2013 Aufrufe

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!