#include #include using namespace std; //Моделира човек с име (с.н. произв. големина) и ЕГН (10 цифри) class Person { private: void copy (const char *_name, const char _id[11]) { name = new char [strlen (_name)+1]; strcpy (name,_name); strcpy (id, _id); } protected: char *name; char id[11]; public: Person () { name = new char [3]; strcpy (name,"NO"); cout << "WRONG!!! \n"; } Person (const char *_name, const char _id[11]) { cout << "CONSTRUCTING PERSON\n"; copy (_name,_id); } Person (const Person& p) { copy (p.name,p.id); } Person& operator = (const Person &p) { if (this != &p) { delete name; copy (p.name,p.id); } return *this; } ~Person () { delete []name; } void print () { cout << "======PERSON:========" << endl << "Name = " << name << endl << "id = " << id << endl; } }; class Student : public Person { public: /*char *name; char id[11];*/ int fn; double grade; Student (char *_name, char _id[11], int _fn, double _grade):Person (_name, _id) { fn = _fn; grade = _grade; } //Person (const Person& p) //Person (char *_name, char _id[11]) Student (const Student& s):Person(s.name,s.id) { cout << "CONSTRUCTING STUDENT\n"; fn = s.fn + 10; grade = s.grade; } Student& operator = (const Student &s) { Person::operator = (s); /* a + b; a.operator+ (b) */ grade = s.grade; fn = s.fn + 10; } void print () { Person::print (); cout << "fn = " << fn << endl << "grade = " << grade << endl << "length of name = " << strlen (name) << endl; } }; int main () { Student kalin ("kalin georgiev","818181818181",1,3); cout << "=======\n"; Student kalin2 (kalin); // kalin.name[0] = 'M'; kalin.print(); kalin2.print(); Student ivan ("ivan","828282",2,4); kalin2 = ivan; kalin2.print(); // kalin2.copy ("ivan3","18"); }