/* * multinheritance.cpp * * Created on: 16.05.2013 * Author: trifon */ #include using namespace std; #include "student.h" #include "employee.h" #include "intern.h" class A { public: int a; public: A() { a = 1; } void print() const { cout << a << endl; } }; class B { public: int a; public: B() { a = 2; } void print() const { cout << a << endl; } }; class C : public A, public B { public: int a; C() { a = 3; } void print() const { cout << A::a << ' ' << B::a << ' ' << a << endl; } }; int main2() { C c; c.print(); ((A)c).print(); ((A const&)c).print(); c.A::print(); C* pc = &c; A* pa = &c; B* pb = &c; cout << pc << endl; cout << pa << endl; cout << pb << endl; cout << &pa->a << endl; cout << &pb->a << endl; cout << &pc->a << endl; return 0; } int main() { Student s(40000, 5.50); cout << s; Employee e("Програмист", 1500); cout << e; Intern i(40001, 6.00, "Демонстратор", 100, 5); //!!! cout << i; i.print(); Intern i2 = i; i2.print(); Intern i3; i3 = i2; i3.print(); Student& si = i; Employee& ei = i; si.setGrade(5); ei.setSalary(80); // !!! Intern& isi = si; // !!! Intern& iei = ei; Intern& isi = (Intern&)si; Intern& iei = (Intern&)ei; isi.print(); iei.print(); cout << &si << ' ' << &ei << endl; cout << &isi << ' ' << &iei << ' ' << &i << endl; Intern& isi2 = reinterpret_cast(si); cout << &isi2 << ' ' << &i << endl; isi2.print(); /* * !!! Intern& iei2 = reinterpret_cast(ei); cout << &iei2 << ' ' << &i << endl; iei2.print(); */ i.print(); return 0; }