В данном примере оба обращения
void print ( Query object, const Query *pointer, const Query &reference ) { // до момента выполнения невозможно определить, // какой экземпляр print() вызывается pointer->print(); reference.print(); // всегда вызывается Query::print() object.print(); } int main() { NameQuery firebird( "firebird" ); print( firebird, &firebird, firebird ); |
}
В данном примере оба обращения через указатель pointer и ссылку reference
разрешаются своим динамическим типом; в обоих случаях вызывается NameQuery::print(). Обращение же через объект object всегда приводит к вызову Query::print(). (Пример программы, в которой используется эффект “усечения”, приведен в разделе 18.6.2.)
В следующих подразделах мы продемонстрируем определение и использование виртуальных функций в разных обстоятельствах. Каждая такая функция-член будет иллюстрировать один из аспектов объектно-ориентированного проектирования.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий