Язык программирования C++. Вводный курс


              

В данном примере оба обращения












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.)

В следующих подразделах мы продемонстрируем определение и использование виртуальных функций в разных обстоятельствах. Каждая такая функция-член будет иллюстрировать один из аспектов объектно-ориентированного проектирования.


Содержание  Назад  Вперед