#include<iostream>
using namespace std;
class Person {
public :
Person( int x) { cout << "Person::Person(int ) called" << endl; }
Person( ) { cout << "Person::Person() called" << endl; }
void x( ) { cout << "X\n " ; }
} ;
class Faculty : virtual public Person {
public :
Faculty( int x) : Person( x) {
cout << "Faculty::Faculty(int ) called" << endl;
}
void y( ) { cout << "Y\n " ; }
} ;
class Student : virtual public Person {
public :
Student( int x) : Person( x) {
cout << "Student::Student(int ) called" << endl;
}
void z( ) { cout << "Z\n " ; }
} ;
class TA : public Faculty, public Student {
public :
TA( int x) : Student( x) , Faculty( x) , Person( x) {
cout << "TA::TA(int ) called" << endl;
}
} ;
int main( ) {
Person* p = new TA( 30 ) ;
p- > x( ) ;
Person* s = new Student( 25 ) ;
//s->y();
//s->z();
}
I2luY2x1ZGU8aW9zdHJlYW0+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKY2xhc3MgUGVyc29uIHsgCnB1YmxpYzogCiAgICBQZXJzb24oaW50IHgpICB7IGNvdXQgPDwgIlBlcnNvbjo6UGVyc29uKGludCApIGNhbGxlZCIgPDwgZW5kbDsgICB9IAogICAgUGVyc29uKCkgICAgIHsgY291dCA8PCAiUGVyc29uOjpQZXJzb24oKSBjYWxsZWQiIDw8IGVuZGw7ICAgfSAKICAgIHZvaWQgeCgpIHsgY291dCA8PCAiWFxuIjsgfQp9OyAKICAKY2xhc3MgRmFjdWx0eSA6IHZpcnR1YWwgcHVibGljIFBlcnNvbiB7IApwdWJsaWM6IAogICAgRmFjdWx0eShpbnQgeCk6UGVyc29uKHgpICAgeyAKICAgICAgIGNvdXQ8PCJGYWN1bHR5OjpGYWN1bHR5KGludCApIGNhbGxlZCI8PCBlbmRsOyAKICAgIH0gCiAgICB2b2lkIHkoKSB7IGNvdXQgPDwgIllcbiI7IH0KfTsgCiAgCmNsYXNzIFN0dWRlbnQgOiB2aXJ0dWFsIHB1YmxpYyBQZXJzb24geyAKcHVibGljOiAKICAgIFN0dWRlbnQoaW50IHgpOlBlcnNvbih4KSB7IAogICAgICAgIGNvdXQ8PCJTdHVkZW50OjpTdHVkZW50KGludCApIGNhbGxlZCI8PCBlbmRsOyAKICAgIH0gCiAgICB2b2lkIHooKSB7IGNvdXQgPDwgIlpcbiI7IH0KfTsgCiAgCmNsYXNzIFRBIDogcHVibGljIEZhY3VsdHksIHB1YmxpYyBTdHVkZW50ICB7IApwdWJsaWM6IAogICAgVEEoaW50IHgpOlN0dWRlbnQoeCksIEZhY3VsdHkoeCksIFBlcnNvbih4KSAgIHsgCiAgICAgICAgY291dDw8IlRBOjpUQShpbnQgKSBjYWxsZWQiPDwgZW5kbDsgCiAgICB9IAp9OyAKICAKaW50IG1haW4oKSAgeyAKICAgIFBlcnNvbiogcCA9IG5ldyBUQSgzMCk7CiAgICBwLT54KCk7CiAgICAKICAgIFBlcnNvbiogcyA9IG5ldyBTdHVkZW50KDI1KTsKICAgIC8vcy0+eSgpOwogICAgLy9zLT56KCk7CiAgICAKfQ==