При наследовании от класса вы знаете требования и ограничения, налагаемые на вас, просто просматривая иерархию. Например, вы можете узнать, просто посмотрев родительский класс (ы), какие методы должны быть определены (чисто виртуальные). Если кто-то решит использовать шаблоны вместо этого (если он отвечает всем требованиям), тогда все будет не так ясно. Методы класса шаблона могут ожидать нескольких методов для type
.
Я наткнулся на сложный класс, который мне нужно использовать. Я не знал, какие методы должен иметь мой type
(класс / объект). Единственный способ, которым я мог это выяснить, - это компилировать, где компилятор сообщал мне, какие методы ожидались. Это как наследование от абстрактного класса без доступа к заголовочному файлу. Это немного болезненно, так как выяснение спецификаций метода (подпись) отнимает много времени.
Теперь оригинальный разработчик класса мог поместить некоторую документацию относительно того, какие методы должны присутствовать и их подписи, но я не могу не задаться вопросом, есть ли способ, которым код может быть самодокументирован (или уже и я не знаю, как просмотреть это?). Компиляция и просмотр ошибок не может быть единственным способом, не так ли?