,’« v; } public: Left(int m. i

Автор admin Вторник, 16 июня 2009 11:32

,’« v; } public: Left(int m. int n) : Top(m) { у = n: } friend ostream& operator«(ostream& os. const Left& 1) { Виртуальные базовые классы 459 return os « static_cast(1) « ‘.’ « l.y; }: class Right : virtual public Top { int z: protected: void specialPrint(ostream& os) const { // Выводятся только данные Right os « ‘.’« z: } public: Right(int m. int n) : Top(m) { z = n; } friend ostream& operator«(ostream& os. const Right& r) { return os « static_cast(r) « ‘,’ « r.z: } }: class Bottom : public Left, public Right { int w: public: Bottom(int i, int j. int k. int m) : Top(i). Left(0. j). RightCO. k) { w = m: } friend ostream& operator«(ostream& os, const Bottoms b) { os « static_cast(b): b.Left::specialPrint(os): b.Right::specialPrint(os): return os « ‘.’ « b.w: } }: int mainO { Bottom b(l. 2. 3. 4): cout « b « endl: // 1.2.3.4 } ///:- Функции specialPrint() объявлены защищенными, потому что они будут вызываться только из Bottom. Они выводят лишь собственные данные, игнорируя данные подобъекта Тор, потому что вызов этих функций находится под контролем оператора « класс


Комментарии закрыты.