
//
// To jest przykładowy kod z podrozdziału 18.2 „Kopiowanie” książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <iostream>

using std::cout;

//------------------------------------------------------------------------------

class vector {
    int sz;                             // rozmiar
    double* elem;                       // wskaźnik na elementy
public:
    vector(int s)                       // konstruktor
        :sz(s), elem(new double[s]) { } // alokuje pamięć
    ~vector()                           // destruktor
    { delete[ ] elem; }                 // dealokuje pamięć

    int size() const { return sz; }               // aktualny rozmiar

    double get(int n) { return elem[n]; }         // dostęp: odczyt
    void set(int n, double v) { elem[n]=v; }      // dostęp: zapis
};

//------------------------------------------------------------------------------

void f(int n)
{
    vector v(3);                        // definicja wektora 3 elementów
    v.set(2,2.2);                       // ustawia v[2] na 2.2
    vector v2 = v;                      // Co się tutaj dzieje?
    // ...
}

//------------------------------------------------------------------------------

int main()
{
    vector v(3);
    vector v2(3);
    v.set(1,99);                        // Ustawia element v[1] na wartość 99.
    v2.set(0,88);                       // Ustawia element v2[0] na wartość 88.
    cout << v.get(0) << ' ' << v2.get(1); 
}

//------------------------------------------------------------------------------
