Probeklausur C++ Crash Course


1) Klassen

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);
std::cout << x+y << std:endl;











2) Fachbegriffe

Nennen Sie den Fachbegriff für den entsprechenden dazugehörigen C++-Gegenpart.

Beispiel: .h Header → .cpp Modul

  • Bauplan: ____________________________________________
  • Argumentwert: ____________________________________________
  • Prototyp: ____________________________________________
  • Call-by-Value: ____________________________________________
  • Lokale Variable: ____________________________________________


3) Fehlersuche

Was fehlt oder ist falsch in der folgenden header-only .h Datei?

  1. class A
  2. {
  3. A();
  4. int *X;
  5. do(B y);
  6. }

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________


4) Programmablauf

Gegeben sei folgendes C++ Programm:

  1. class C1
  2. {
  3.    public: C1(int x = 1) : v(x) {}
  4.  
  5.    int x() {return(y()-1);}
  6.    int y() {return(2*z());}
  7.    virtual int z() {return(3*v);}
  8.  
  9.    protected: int v;
  10. };
  11.  
  12. class C2: public C1
  13. {
  14.    public: C2(int x = 2) : C1(x) {}
  15.    int y() {return(3*z());}
  16. };
  17.  
  18. class C3: public C2
  19. {
  20.    public: C3(int x = 3) : C2(x) {}
  21.    int z() {return(12*v);}
  22. };
  23.  
  24. void main()
  25. {
  26.    {
  27.       C2 a(10);
  28.       std::cout << a.x() << std::endl;
  29.    }
  30.    {
  31.       C2 *b = new C3();
  32.       std::cout << b->x() << std::endl;
  33.    }
  34. }

Welche Zahlen gibt das Programm aus?

  • Zeile 28:
  • Zeile 32:

In welchen Zeilen wird der Konstruktor bzw. Destruktor der Klasse C2 bzw. C3 aufgerufen:

  • Konstruktor C2:
  • Destruktor C2:
  • Konstruktor C3:
  • Destruktor C3:


5) Lückentext

Füllen Sie die Lücken in folgendem Code mit sinnvollen Anweisungen:

  1. class RedColor: ...
  2. {
  3. ...
  4.  
  5.    RedColor() ...
  6.  
  7.  
  8.  
  9.  
  10.  
  11. };

Options: