Untitled
unknown
plain_text
a year ago
2.0 kB
4
Indexable
#include <iostream> #include <string> using namespace std; class Zrno { public: string boja; float promjer; }; class Pijesak { public: int kolicina; Zrno* zrno; // Konstruktor Pijesak(int _kolicina) : kolicina(_kolicina) { zrno = new Zrno[kolicina]; // dinamički alocirajte polje 'zrno' } // Konstruktor kopije Pijesak(const Pijesak& other) : kolicina(other.kolicina) { zrno = new Zrno[kolicina]; for (int i = 0; i < kolicina; ++i) { zrno[i] = other.zrno[i]; } } // Operator pridruživanja s semantikom kopiranja Pijesak& operator=(const Pijesak& other) { if (this != &other) { delete[] zrno; // Oslobodi staro zrno prije kopiranja kolicina = other.kolicina; zrno = new Zrno[kolicina]; for (int i = 0; i < kolicina; ++i) { zrno[i] = other.zrno[i]; } } return *this; } // Operator pridruživanja s semantikom prijenosa (move) Pijesak& operator=(Pijesak&& other) noexcept { if (this != &other) { delete[] zrno; // Oslobodi staro zrno prije premještanja kolicina = other.kolicina; zrno = other.zrno; other.kolicina = 0; other.zrno = nullptr; } return *this; } // Destruktor ~Pijesak() { delete[] zrno; // Oslobodi dinamički alocirano polje zrna } }; int main() { Pijesak igraliste(1000000); cout << "Na igralistu ima " << igraliste.kolicina << " zrna pijeska!\n"; // Demonstracija konstruktora kopije Pijesak kopija(igraliste); // Demonstracija operatora pridruživanja s kopiranjem Pijesak kopija2 = igraliste; // Demonstracija operatora pridruživanja s prijenosom (move) Pijesak novi = std::move(igraliste); return 0; }
Editor is loading...
Leave a Comment