Невозможно Быстрые Делегаты C++ и различные единицы перевода

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

Вот почему JDBC является всеми интерфейсами; Вы действительно не заботитесь о том, какие классы используются в реализации JDBC, Вам только нужна любая реализация JDBC, чтобы иметь то же ожидаемое поведение. Внутренне, драйвер JDBC Oracle может очень отличаться от драйвера PostgreSQL, но это не важно Вам. Вероятно, придется наследоваться некоторым внутренним классам, которые уже имели разработчики базы данных, в то время как другой может быть полностью разработан с нуля, но это не важно для Вас, пока они оба реализуют те же интерфейсы так, чтобы можно было общаться с один или другой, не зная внутренние работы также.

19
задан plasmacel 31 March 2019 в 14:06
поделиться

1 ответ

Код соответствует стандарту и соответствует требованиям. Я не вижу места, где бы он нарушал ODR, и это правда, что все экземпляры шаблона функции с одинаковыми параметрами шаблона должны иметь «один и тот же адрес» (в том смысле, что все указатели на функции должны быть равны) - как это достигнуто не важно. ISO C ++ 03 14.5.5.1 [temp.over.link] описывает правила более подробно

Таким образом, сравнение вполне может быть определено там совместимым и переносимым способом.

12
ответ дан 30 November 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: