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