Untitled
unknown
plain_text
2 years ago
2.0 kB
5
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