Punkte: ___
Probeklausur C++
1 Punkt → 1 Minute
Notenschlüssel: 40%=4.0 … 80%=1.0
1) Klassen (12 Punkte)
Eine Farbe sei mit ihren 3 Komponenten R, G, und B gegeben. Implementieren Sie eine Klasse “Color” (header-only), mit welcher man die komponentenweise Addition zweier Farben in C++ wie folgt schreiben kann:
Color x(1,0,0), y(0,1,1); Color z = x.plus(y);
5 Zusatzpunkte für:
std::cout << x+y << std:endl;
2) Fachbegriffe (5 Punkte)
Nennen Sie den Fachbegriff für den entsprechenden dazugehörigen C++-Gegenpart.
Beispiel: .h Header → .cpp Modul
- Bauplan: ____________________________________________
- Argumentwert: ____________________________________________
- Prototyp: ____________________________________________
- Call-by-Value: ____________________________________________
- Modullokal: ____________________________________________
3) Fehlersuche ($10\cdot\frac{1}{2}$ Punkte)
Was fehlt oder ist falsch in der folgenden header-only .h Datei?
class A { A(); int *X; do(B y); }
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
4) Programmablauf (6 Punkte)
Gegeben sei folgendes C++ Programm:
- class C1
- {
- public: C1(int x = 1) : v(x) {}
- int x() {return(y()-1);}
- int y() {return(2*z());}
- virtual int z() {return(3*v);}
- protected: int v;
- };
- class C2: public C1
- {
- public: C2(int x = 2) : C1(x) {}
- int y() {return(3*z());}
- };
- class C3: public C2
- {
- public: C3(int x = 3) : C2(x) {}
- int z() {return(12*v);}
- };
- void main()
- {
- {
- C2 a(10);
- std::cout << a.x() << std::endl;
- }
- {
- C2 *b = new C3();
- std::cout << b->x() << std::endl;
- }
- }
Welche Zahlen gibt das Programm aus (jeweils 1 Punkt)?
- Zeile 28:
- Zeile 32:
In welchen Zeilen wird der Konstruktor bzw. Destruktor der Klasse C2
bzw. C3
aufgerufen (jeweils 1 Punkt):
- Konstruktor C2:
- Destruktor C2:
- Konstruktor C3:
- Destruktor C3:
5) Lückentext (4 Punkte)
Füllen Sie die Lücken in folgendem Code mit sinnvollen Anweisungen:
- #include <iostream>
- #include <exception>
- int f(int a, int b)
- {
- return( a / b );
- }
- int main()
- {
- for (int i=0; i<=10; i++)
- for (int j=0; j<=10; j++)
- {
- int x = f(i, j);
- std::cout << c << std::endl;
- }
- }