#include class Person { public: Person() { capuletOK = true; montagueOK = true; } bool mayMarryCapulet() { return capuletOK; } bool mayMarryMontague() { return montagueOK; } void print() { if (capuletOK) cout << "capuletOK" << endl; else cout << "not capuletOK" << endl; if (montagueOK) cout << "montagueOK" << endl; else cout << "not montagueOK" << endl; } protected: bool capuletOK, montagueOK; }; class Montague : public Person { public: Montague() : Person() { capuletOK = false; } }; class Capulet : public Person { public: Capulet() : Person() { montagueOK = false; } }; int main() { Person * Romeo = new Montague; Person * Juliet = new Capulet; Person justAnotherGuy = *Romeo; // Make Romeo into a regular Person justAnotherGuy.print(); return 0; }