Ue1
Erweitern Sie das Programm aus Uebung 6 Aufgabe 2 wie folgt:
1. Erzeugen Sie einen Programmabsturz durch Verwenden
von Kopien.
2. Beheben Sie das Problem.
3. Erzeugen Sie eine logisch falsche Situation durch
Verwendung der Zuweisung.
4. Beheben Sie das Problem.
5. Vervollständigen Sie die Klasse so, daß
Sie als Basisklasse geeignet wäre.
Ue2
Welche Ausgaben erzeugt das folgende Programm?
(Anmerkung: Der Einfachheit halber sind alle Elemente public!)
class A{
public:
int i;
A():i(5){}
};
class B{
public:
int j;
B():j(6){}
// virt. Destr. etc.
};
class C : public B{
public:
int k;
A a;
C():k(7){}
void show(){cout<<" i: "<<a.i<<"
j: "<<j<<" k: "<<k<<endl;}
};
void main(){
C c1;
c1.show();
c1.a.i=55;
c1.j=66;
c1.k=77;
C c2=c1;
c2.show();
}
Erstellen Sie in der Klasse C einen eigenen Kopierkonstruktor so, daß
das Kopieren
richtig erfolgt.
Ue3
Gegeben ist eine Klassenhierarchie für Dokumente:
class Dok{
public:
virtual void show()=0;
};
class ZahlDok :public Dok{
int i[2];
public:
ZahlDok(){i[0]=11;i[1]=22;}
void show(){cout<<"ZahlDok:
"<<i[0]<<i[1]<<endl;}
};
class CharDok :public Dok{
char c[2];
public:
CharDok(){c[0]='J';c[1]='A';}
void show(){cout<<"CharDok:
"<<c[0]<<c[1]<<endl;}
};
Sowie ein Teil der Klassenhierarchie der Anwendungsklasse
Eine Anwendung verwaltet Dokumente (hier maximal 3) die auf Bedarf
hinzugefügt
werden (Methode addDok())
class Anwendung{
protected:
Dok* dp[3];
int anz;
public:
Anwendung():anz(0){}
// TODO
};
Vervollständigen Sie die Klassenhierarchie der Anwendung so, daß
folgende
main() Fkt. ordnungsgemäss abgearbeitet wird.
void main(){
int k;
Anwendung* AP;
cout<<"Zahl (=1) oder Char (<>1)Anwendung
?\n"; // Benutzerauswahl
cin >>k;
// der Anwendung
if (k==1) AP = new ZAnw;
// Zahlenanwendung <-> ZahlDok
if (k!=1) AP = new CAnw;
// Charanwendung <-> CharDok
for(int i=0;i<3;++i){
// einfache Simulation des Hinzufügens
cout<<"weiteres Dokument\n";
// von Dokumenten durch Benutzer
AP->addDok();
}
AP->show();
// Anzeigen der Dokumente
delete AP;
}
Ue4
Erstellen Sie eine Funktion, die das Minimum von zwei Werten zurückgibt.
Wenden Sie die Funktion sowohl auf Instanzen von int als auch auf Instanzen
von
Modulo5 (Klasse erstellen!) an.
*/