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:

  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 (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:

  1. #include <iostream>
  2. #include <exception>
  3.  
  4. int f(int a, int b)
  5. {
  6.    return( a / b );
  7. }
  8.  
  9. int main()
  10. {
  11.  
  12.  
  13.       for (int i=0; i<=10; i++)
  14.          for (int j=0; j<=10; j++)
  15.          {
  16.             int x = f(i, j);
  17.             std::cout << c << std::endl;
  18.          }
  19.  
  20.  
  21.  
  22.  
  23.  
  24. }

Options: