Здравствуйте, Pzz, Вы писали:
BFE>>Если у вас есть подобъект, то его можно вызвать напрямую. Виртуальность нужна только если вы поднимаетесь от базового объекта к потомку — в другую сторону можно двигаться без виртуальности.
Pzz>Потому что у меня есть, например, объект, в который можно писать. И есть, например, другой объект, который умеет писать в объект, в который можно писать. И мне сразу становится все равно, куда писать, в файл на диске, в сетевой сокет или в буфер в памяти.
Ну, к слову, такое можно вполне провернуть и на шаблонах без виртуальности. Правда, тогда всё, что пользуется интерфейсом writer'а переезжает в хидер, и код раздувается. На десктопе это не проблема, и компилеры обычно умеют избегать лишнего дублирования, но под MCU это не всегда так — например, armcc так не умеет, у него шаблонный код дублируется для каждого случая инстанциации, даже если двоичная реализация побитно совпадает с другими. Из-за этого использование шаблонов не всегда оправдано