Zeiger und Arrays bei Objekten
vorlesung_2013_11_14.zip - Während der Vorlesung am 14.11.2013 entwickelte Programme
|
Vorbetrachtungen
Call by Value bei der Übergabe von Objekten an Funktionen
|
#include<iostream> using namespace std; class Zahl { public: int x; Zahl(int xx) { x = xx; } }; class Zahlverwalter { public: void zeigeX(Zahl z) { z.x++; cout<<z.x<<endl; } }; int main(void) { Zahl z1(1),z2(2); Zahlverwalter v; v.zeigeX(z1); v.zeigeX(z2); cout<<z1.x<<endl; cout<<z2.x<<endl; }
Code 0-1: Call by value
2 3 1 2
Code 0-1b: Konsolenausgabe
|
#include<iostream> using namespace std; class Zahl { public: int x; Zahl(int xx) { x = xx; } }; class Zahlverwalter { public: void zeigeX(Zahl* z) { z->x++; cout<<z->x<<endl; } }; int main(void) { Zahl z1(1),z2(2); Zahlverwalter v; v.zeigeX(&z1); v.zeigeX(&z2); cout<<z1.x<<endl; cout<<z2.x<<endl; }
Code 0-2: Call by reference (Zeigerübergabe)
2 3 2 3
Code 0-2b: Konsolenausgabe
Call by reference mit Hilfe von Zeigern
|
Referenzen als getarnte Zeiger
|
#include<iostream> using namespace std; class Zahl { public: int x; Zahl(int xx) { x = xx; } }; class Zahlverwalter { public: void zeigeX(Zahl& z) { z.x++; cout<<z.x<<endl; } }; int main(void) { Zahl z1(1),z2(2); Zahlverwalter v; v.zeigeX(z1); v.zeigeX(z2); cout<<z1.x<<endl; cout<<z2.x<<endl; }
Code 0-3: Call by reference (Referenzübergabe)
2 3 2 3
Code 0-3b: Konsolenausgabe