Kolokwium numer 2 z C++.          4 czerwca 2002

 

 

Tak zaimplementuj daną klasę, aby wywołania w funkcji poniższej funkcji main były poprawne (i nie zapomnij o zaimplementowaniu destruktora):

 

 

class Klasa {

public:

        int *val;                   // tablica liczb całkowitych

        int size;                   // długość tablicy liczb całkowitych

 

        Klasa(int*args=0, int _size=0):size(_size) {    // konstruktor klasy

               val = 0;

               if(size>0) {

                       val = new int[size];

                       for(int i=0; i< size; i++)

                              val[i] = args[i];

               }

        }

        ...

};

 

 

int main() {

        int *tab1 = new int[10];

        for (int i=0; i<10; i++)      tab[i] = i;                                               // inicjalizacja przykładowej tablicy

        int *tab2 = new int[10];

        for (int i=0; i<10; i++)      tab[i] = i*10;                                          // inicjalizacja przykładowej tablicy

 

        Klasa k1(tab1, 10);

        Klasa *pk4  = new Klasa(tab2)

 

        Klasa k2(k1);                                                                                // konstruktor kopiujący

       

Klasa k3; 

k3 = k1;                                                                                       // operator przypisania

 

if(k3 == k1)                                                                                  // operator porówania ==

               cout << "Obiekty k3 i k1 sa rowne" << endl;

 

        if(k3 != *pk4)                                                                               // operator porówania !=

               cout << "Obiekty k3 i *pk4 sa rozne" << endl;

 

 

        cout << "Największa liczba w obiekcie      = " << ! *pk4 << endl;             // operator !

        cout << "Najmniejsza liczba w obiekcie    = " << ~k1 << endl;                 // operator ~

        cout << "Liczba z pozycji 3                        = " << k1[2] << endl;              // operator [ ]

 

 

        cout << k1 << k2 << k3 << *pk4;            // operator <<

 

 

        delete pk4;                                             // destruktor

 

        delete tab1;

        delete tab2;

 

        return 0;

}