ic Stringable { int myData; pu

Автор admin Понедельник, 15 июня 2009 11:32

ic Stringable { int myData; public: AbleCint x) { myData – x; } void print(ostream& os) const { os « myData: } int toIntO const { return myData: } string toStringO const { ostringstream os; os « myData: return os.strO; } }: void testPrintable(const Printable& p) { p.print(cout): cout « endl; } void testIntable(const Intable& n) { int i = n.toIntO + 1; cout « i « endl; } void testStringable(const StringableS s) { string buf = s.toStringO + “th”; cout « buf « endl; } int mainO { Able a(7): testPrintable(a): testlntable(a): testStringable(a): } ///:- Класс Able «реализует» интерфейсы Printable, Intable и Stringable, то есть предоставляет реализации для функций, объявленных в этих классах. Так как Able наследует от всех трех классов, объекты Able воплощают множественные связи типа «является частным случаем». Например, объект А может использоваться как объект Printable, потому что его класс Able открыто наследует от Printable и предоставляет реализацию print(). Тестовым функциям не нужно знать фактический тип их параметра; достаточно того, что тип переданного объекта может заменить тип их параметра. 446 Гл


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