Commit bf2f2b37 by Patryk Czarnik

wersja robocza mająca pokazać problemy z pamięcią

parent 016a539f
......@@ -35,8 +35,6 @@ int main() {
std::cout <<"size: " << w.size() << '\n';
std::cout << w << '\n';
std::cout << "\nsuma wynosi: " << suma(w) << '\n';
// EXN w.set(50, 5050);
try {
......@@ -46,7 +44,30 @@ int main() {
std::cout << "wyjątek " << exn << '\n';
}
std::cout << "\nsuma wynosi: " << suma(w) << '\n';
std::cout << "\nsuma wynosi: " << suma(w) << "\n\n";
std::cout << "w: " << w << '\n';
Wektor z = w; // tu działa konstruktor kopiujący
std::cout << "z: " << z << '\n';
Wektor v; // tu działa konstruktor domyślny
v = z; // tu działa operator przypisania
std::cout << "v: " << v << '\n';
std::cout << "zmiany, zmiany...\n";
w[1] = 1111111;
z[2] = 2222222;
v[3] = 3333333;
w.push_back(1001);
z.push_back(2002);
v.push_back(3003);
std::cout << "w: " << w << '\n';
std::cout << "z: " << z << '\n';
std::cout << "v: " << v << '\n';
std::cout << "Koniec programu\n";
return 0;
......
......@@ -3,6 +3,12 @@
const TypIndeksu startowy_rozmiar_tablicy = 8;
// Dla klas, które same zarządzają pamięcią, istotne jest zdefiniowanie
// w spójny sposób takich elementów klasy, jak:
// - konstruktor kopiujący
// - operator przypisania
// - destruktor
Wektor::Wektor()
: rozmiar_tablicy{startowy_rozmiar_tablicy},
liczba_elementow{0}
......@@ -10,6 +16,21 @@ Wektor::Wektor()
t = new TypWartosci[rozmiar_tablicy];
}
// konstruktor kopiujący
// domyślna implementacja skopiowałaby wskaźnik do tej samej tablicy,
// co powodowałoby mnóstwo problemów:
// - wzajemne nadpisywanie zawartości podczas operowania na dwóch zmiennych
// - double free pod koniec życia obiektów
// Wektor::Wektor(const Wektor &zrodlowy)
// : rozmiar_tablicy{zrodlowy.rozmiar_tablicy},
// liczba_elementow{zrodlowy.liczba_elementow}
// {
// t = new TypWartosci[rozmiar_tablicy];
// for(TypIndeksu i=0; i<liczba_elementow; i++) {
// t[i] = zrodlowy.t[i];
// }
// }
Wektor::~Wektor() {
std::cout << "destruct\n";
delete[] t;
......
......@@ -20,6 +20,8 @@ class Wektor {
public:
Wektor();
//Wektor(const Wektor&);
~Wektor();
TypIndeksu size() const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment