/* * person.cpp * * Created on: 18.04.2013 * Author: trifon */ #include #include "person.h" Person::Person() { cerr << "Person()\n"; name = new char[1]; name[0] = '\0'; strcpy(id, "0"); } Person::Person(char const* _name, char const* _id) { cerr << "Person(...)\n"; name = new char[strlen(_name)+1]; strcpy(name, _name); strncpy(id, _id, 10); id[10] = '\0'; // print(); // статично } char const* Person::getName() const { return name; } char const* Person::getID() const { return id; } void Person::setName(char const* _name) { delete[] name; name = new char[strlen(_name)+1]; strcpy(name, _name); } void Person::setID(char const* _id) { strncpy(id, _id, 10); id[10] = '\0'; } istream& operator>>(istream& is, Person& p) { is.getline(p.id, 10, ' '); char buf[100] = {0}; is.getline(buf, 99); p.setName(buf); return is; } ostream& operator<<(ostream& os, Person const& p) { os << "Име: " << p.name << endl; os << "ЕГН: " << p.id << endl; return os; } Person::~Person() { cerr << "~Person\n"; // print(); // статично delPerson(); } void Person::delPerson() { delete[] name; } void Person::copyPerson(Person const& p) { setID(p.id); name = new char[strlen(p.name)+1]; strcpy(name, p.name); } Person::Person(Person const& p) { cerr << "copy Person\n"; copyPerson(p); } Person& Person::operator=(Person const& p) { if (this != &p) { cerr << "Person=\n"; delPerson(); copyPerson(p); } return *this; } void Person::print() const { cout << *this; }