ным указателем Shape*. Происхо
Автор admin Пятница, 5 июня 2009 11:32
ным указателем Shape*. Происходит именно то, что нужно: мы смешиваем разные типы указателей и предоставляем механизму полиморфного вызова разбираться, что к чему. В первом цикле for мы создаем итератор и устанавливаем его в начало интервала, вызывая функцию begin() класса контейнера. Во всех контейнерных классах определены функции begin() и end(), которые возвращают соответственно начальный и конечный1 итераторы. Чтобы узнать, не завершен ли перебор элементов контейнера, следует проверить, не равен ли итератор конечному итератору endl(). Для этого нельзя использовать операторы < и <=; работают только проверки !¦ и --, поэтому на практике часто встречаются циклы вида fordter i = shapes.beginO: i !- shapes.endO; i++) Это означает «перебрать все элементы контейнера от начала до конца». Как получить значение элемента, на который ссылается итератор? Конечно, разыменовать его перегруженным оператором *. Полученное значение соответствует типу элементов контейнера. В нашем примере контейнер содержит указатели Shape*, поэтому *i вернет указатель Shape*. Функция класса Shape по указателю вызывается оператором ->;
Комментарии закрыты.
Последние комментарии