Ĺadny brzuch
Uważam, że w zamieszczonym rozwiązaniu do zadania drugiego z poprzedniego odcinka kursu jest błąd, a raczej niedopatrzenie. Zadaniem klasy jest przechowywanie informacji o liczbie swoich obiektów, jednak klasa ta może działać błędnie. Autor rozwiązania zapomniał o konstruktorze kopiującym. Skutkiem tego może być przyjęcie przez zmienną count wartości ujemnych. Przykład:
#include <iostream> using namespace std; class Klasa{ public: static int count; Klasa(){count++;}; ~Klasa() {cout << "count: " << --count << endl;} }; int Klasa::count = 0; int main(){ Klasa clss; Klasa clss2 = clss; Klasa clss3 = clss2; }
A wystarczyło dodać linijkę:
Klasa(Klasa&){count++;};
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
#include <iostream> using namespace std; class Klasa{ public: static int count; Klasa(){count++;}; ~Klasa() {cout << "count: " << --count << endl;} }; int Klasa::count = 0; int main(){ Klasa clss; Klasa clss2 = clss; Klasa clss3 = clss2; }
A wystarczyło dodać linijkę:
Klasa(Klasa&){count++;};