C++   ::   Хилл Мюррей

Страница: 236 из 357



Вызов функции с помощью операции разрешения области вдимости ::, как это делается в manager::print(), гарантирует, что механизм виртуальных функций применяться не будет. Иначе manager::print() подвергалось бы бесконечной рекурсии. Примнение уточненного имени имеет еще один эффект, который может оказаться полезным: если описанная как virtual функция описна еще и как inline (в чем ничего необычного нет), то там, где в вызове применяется ::, может применяться inline-подстновка. Это дает программисту эффективный способ справляться с теми важными специальными случаями, когда одна виртуальная функция вызывает другую для того же объекта. Поскольку тип объекта был определен при вызове первой виртуальной функции, обычно его не надо снова динамически определять другом вызове для того же объекта.



7.3 Альтернативные Интерфейсы

После того, как описаны средства языка, которые относяся к производным классам, обсуждение снова может вернуться к стоящим задачам. В классах, которые описываются в этом раздле, основополагающая идея состоит в том, что они однажды нписаны, а потом их используют программисты, которые не могут изменить их определение. Физически классы состоят из одного или более заголовочных файлов, определяющих интерфейс, и оного или более файлов, определяющих реализацию. Заголовочные файлы будут помещены куда-то туда, откуда пользователь может взять их копии с помощью директивы #include. Файлы, определющие реализацию, обычно компилируют и помещают в библиотеку.



7.3.

|< Пред. 234 235 236 237 238 След. >|

Java книги

Контакты: [email protected]