eturn Box(bl.t + b2.t); } t
Автор admin
Четверг, 21 мая 2009 11:32
eturn Box(bl.t + b2.t); } tempiate ostream& operator«(ostream& os. const Box& b) { return os « ‘[' « b.t « ']‘: } int mainO { Box bid). b2(2); cout « bl + b2 « endl: // [3] // cout « bl + 2 « endl: // Автоматические преобразования отсутствуют! } III:- В этом примере определяются внешние операторы сложения и вывода в поток. В функции main() проявляется главный недостаток такого подхода: автоматические преобразования (как в выражении М+2) становятся невозможными, потому что они не поддерживаются шаблонами. При внутреннем («нешаблонном») определении программа получается короче и надежнее: //: С05:Вох2.срр // Определение нешаблонных операторов #include using namespace std: tempiate class Box { T t: public: Box(const T& theT) : t(theT) {} friend Box operator+(const Box& bl, const Box& b2) { return Box(bl.t + b2.t): } friend ostreamS operator«(ostream& os. const Box& b) { return os « ‘[' « b.t « ']‘: } }: int mainO { Box bid). b2(2): cout « bl + b2 « endl: // [3] cout « bl + 2 « endl: // [3] } ///:- Поскольку операторы являются обычными функциями
Комментарии закрыты.
Последние комментарии