Wszystkie ćwiczenia


Ćwiczenia 9

Przeciążenie operatorów, zarządzanie pamięcią

Zadanie 0: przeciążanie operatorów

Stwórz klasę Country z polem int population. Przeciąż ++ tak, aby poniższy snippet pokazał jako liczbę populacji 1000001, a potem 1000002:


// testowanie
Country kraj(1000000);
kraj++;
std::cout << "Populacja wzrosła o 1. Wynosi: " << kraj.get_population() << std::endl;
++kraj;
std::cout << "Populacja wzrosła o 1. Wynosi: " << kraj.get_population() << std::endl;
        

// ściągawka dla pre- i postinkrementacji
class T
{
    public:
        
        // ++A
        T& operator++()
        {
            // todo
            return *this;
        }

        // A++
        T operator++(int)
        {
           ++(*this);
           return *this;
        }
};
                
Zadanie 1: odpowiednik toString()

Do klasy Country dodaj pole string name. Spraw, aby std::cout automatycznie formatował wyświetlany obiekt.


class A {
public:
    int i;
};
    
std::ostream& operator<<(std::ostream &strm, const A &a) {
    return strm << "A(" << a.i << ")";
}
                
Zadanie 2

Utwórz klasę reprezentującą grupę studencką. Trzymaj w niej kolekcję studentów.

Zadanie 3

Niech klasa Student posiada listę grup, do których należy.

Zadanie 4

Napisz destruktor studenta tak, że gdy skasujemy obiekty reprezentujące studentów, to grupa studencka (pusta) przestanie istnieć.