Интерфейсы, зачем они нужны?

Сообщение было отмечено SpideCode как решение

Решение

Интерфейс это доступ и зависимости/правила его организации (самопальное определение). Классы и функции публикуют сигнатуры вызываемых сущностей.
В этом смысле наиболее широкими возможностями обладают шаблоны. Шаблонные классы, например, позволяют публиковать сигнатуры вызываемых методов не ограничивая их тем члены они или статические методы, в частности. Пока вы не дошли до них - оставим.
Наследование в части интерфейсов - публичное, это наследование поведения и типа. Последнее - самое главное. Подтипизация позволяет связывать подтипы с их типами во время выполнения, что невозможно сделать с шаблонами. Кроме того, это нужно для использовании объектов разных подтипов в одной коллекции типов (указателей на типы вернее), что шаблоны тоже не могут делать. В этом смысле интерфейсом является уровень типа, а не уровень вызываемого метода. Всё это потому, в частности, что С++ не может использовать указатели на методы как указатели на функции. Это приводит к тому, что контейнеру нельзя передать разнотипные объекты и указатели на методы, чтобы он их положил а методы вызывал привязывая объекты к методам независимо. Это объясняется тем, в частности, что при наличии такой возможности (что технически также сложновато) контроль типов теряется до степени С-стиля с приведениями. Наследование с виртуальными методами, по крайней мере, гарантирует во время компиляции, что затребованный метод будет вызван соответствующим образом.
SpideCode, вопрос
- глубокий и философский вопрос. Сам поиск ответа на подобный вопрос, может стать смыслом жизни. Однако, сначала имеет смысл изучить основы ООП - ознакомиться с тем что за фрукт и как оно работает. Ввиду обширности, - лучше постепенно. И в процессе, понемногу узнавать интерфейсы в том, что проносится бурным потоком.

0