Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Sibling
- {
- private:
- char *nume;
- char *prenume;
- int *varsta;
- // int size;
- // scoatem parametrul asta size pentru ca nu are rost, mai jos in functii tu oricum il schimbi si ajungi la niste memory leaks
- public:
- Sibling(const char *n = NULL,const char *p = NULL, const int v = 0);
- ~Sibling()
- {
- delete [] nume,prenume,varsta;
- }
- Sibling(const Sibling&);
- void print()
- {
- cout << this->nume << ' ' << this->prenume << ' ' << *this->varsta << endl;
- // pui *this->varsta ca sa iti afiseze numarul. altfel iti afiseaza ceva de genul 0x80173a0
- }
- void update(const char *, const char *, const int);
- };
- Sibling::Sibling(const char *n, const char *p, const int v)
- {
- // size = strlen(n);
- this->nume = new char[strlen(n) + 1];
- strcpy(this->nume, n);
- // size = strlen(p);
- this->prenume = new char[strlen(p) + 1];
- strcpy(this->prenume, p);
- this->varsta = new int(v);
- }
- // nu ar trebui sa transmiti varsta ca vector. iti las in main cum trebuia sa declari obiectul ca sa mearga cu const int* v
- void Sibling::update(const char *n, const char *p, const int v)
- {
- delete [] nume,prenume,varsta;
- int size = strlen(n); // l-am facut int si ramane doar aici
- nume = new char[size + 1];
- strcpy(nume, n);
- size = strlen(p);
- prenume = new char[size + 1];
- strcpy(prenume, p);
- varsta = new int(v);
- }
- Sibling::Sibling(const Sibling& old_str)
- {
- // aici size o sa fie egal cu strlen(old_str.prenume)
- int size = strlen(old_str.nume);
- nume = new char[size + 1];
- strcpy(nume, old_str.nume);
- // am luat din nou marimea
- size = strlen(old_str.prenume);
- prenume = new char[size + 1];
- strcpy(prenume, old_str.prenume);
- varsta= new int(*old_str.varsta);
- }
- int main()
- {
- Sibling sibling1("Popescu", "Ana", 30);
- Sibling sibling2 = sibling1;
- sibling1.print();
- sibling2.print();
- sibling2.update("Ionescu", "Mihaela", 31);
- sibling1.print();
- sibling2.print();
- return 0;
- }
Add Comment
Please, Sign In to add comment