|
Освой самостоятельно С++ за 21 деньList<String> string_list; List<Cat> Cat_List; List<int> int_List; 5. Жучки: что неправильно в приведенном ниже программном коде? (Предположите, что определяется шаблон класса List, а Cat — это класс, определенный выше в данной книге.) List<Cat> Cat_List; Cat Felix; CatList.append( Felix ); cout << "Felix is " << ( Cat_List.is_present( Felix ) ) ? "" : "not " << "present\n"; ПОДСКАЗКА (поскольку задание не из самых легких): подумайте, чем тип Cat отличается от типа int. В классе Cat не определен оператор operator==. Все операции, в которых сравниваются значения членов класса iist, таких как is_present, будут вызывать ошибку компиляции. Для уменьшения вероятности возникновения таких ошибок перед объявлением шаблона поместите обширный комментарий, в котором должно быть указано, какие операторы следует определить в классе для успешного выполнения всех его методов. 6. Объявите дружественный оператор operator== для класса List. friend int operator==( const Type& lhs, const Type& rhs ); 7. Напишите выполнение дружественного оператора operator== для класса List. template <class Type> int List<Type>::operator==( const Type& lhs, const Type& rhs ) { // сначала сравниваем размеры списков if ( lhs.theCount != rhs.theCount ) return 0; // списки различны ListCell *lh = lhs.head; ListCell *rh = rhs.head; for(; lh != 0; lh = lh.next. rh = rh.next ) if ( lh.value != rh.value ) return 0; return 1; // если они не различны, то совпадают } 8. Грешитли оператор operator== той же проблемой, которая существует в упражнении 5? Да ...» | Код для вставки книги в блог HTML
phpBB
текст
|
|