/* Homework #1. Classes, constructors, operator overloading. */
/*    Roman V. ShapovAlov. CM&C-210. overrider@cmcspec.ru    */

#include <iostream>

using namespace std;

class Person{
private:
	char name[32];
	long long phone;
	char addr[80];
	bool genderM;
public:
	Person (const char *theName, long long thePhone, 
			const char *theAddr, bool gen); //constructor
	Person (const Person &p);				//copying constructor
	Person &operator= (const Person &p);    // assigning
	void prBusinessCard();
	~Person ();
};

Person::Person (const char *theName = "John Doe", long long thePhone = 0, 
			const char *theAddr = "no home", bool gen = 1){
	strcpy (name,theName);
	phone = thePhone;
	strcpy (addr,theAddr);
	genderM = gen;
}

Person::Person (const Person &p): phone(p.phone),genderM(p.genderM){
	strcpy (name,p.name);
	strcpy (addr,p.addr);
}

Person& Person::operator= (const Person &p){
	phone = p.phone;   genderM = p.genderM;
	strcpy (name,p.name);
	strcpy (addr,p.addr);
	return *this;
}

void Person::prBusinessCard(){
	cout<<name<<endl<<(genderM?"male":"female")<<endl<<phone
		<<endl<<addr<<endl<<endl;
}

Person::~Person (){
	cout<<"destruction..."<<endl;
}

int main (){
	cout<<"Person #1:"<<endl;
	Person p = Person();
	p.prBusinessCard();
	cout<<"Person #2:"<<endl;
	Person r = Person("roma",7777777L,"overrider@cmcspec.ru",1);
	r.prBusinessCard();
	Person c = r;
	cout<<"Person #3:"<<endl;
	c.prBusinessCard();
	c=r=p;
	cout<<"Person #4:"<<endl;
	c.prBusinessCard();
	return 0;
}
