#include <iostream>
using namespace std;
class person {
string names, spouse, gender;
public:
person (string nm): names (nm) {
// To demonstrate that the parent object is called before the child object.
cout << "New person created. " ;
}
//pure virtual function "divorce ()" makes "person" an abstact class
virtual void divorce () = 0;
string getGender() {return gender;}
void resetSpouse() {spouse.clear();}
string getSpouse() {return spouse;}
};
class man: public person {
string manGen;
public:
man (string name): manGen ("Male"), person(name) {
cout << "Male added." << endl;
}
void divorce() {resetSpouse ();}
};
class trans: public person {
string transGen;
public:
trans (string name): transGen ("Trans"), person(name) {
cout << "Trans added." << endl;
}
void divorce() {resetSpouse ();}
};
class woman: public person {
string womanGen;
public:
woman (string name): womanGen ("Female"), person(name) {
cout << "Female added." << endl;
}
void divorce () {resetSpouse ();}
};
int main () {
woman jane ("Jane");
man notJane ("Jack");
trans notJack ("Unicorn");
return 0;
}
/*
Output:
New person created. Male added.
New person created. Male added.
New person created. Trans added.
*/