[#] Разделяем интерфейс и реализацию в функциональном стиле на С++
habrabot(difrex,1) — All
2016-10-22 00:30:03


Разделяем интерфейс и реализацию в функциональном стиле на С++

![][1]
В языке С++ для разделения объявлений структур данных (классов) используются заголовочные файлы. В них определяется полная структура класса, включая приватные поля.
Причины подобного поведения описаны в замечательной книге «Дизайн и эволюция C++» Б.Страуструпа.

Мы получаем внешне парадоксальную ситуацию: изменения в закрытых приватных полях класса требует перекомпиляции всех единиц трансляции (.cpp файлов), использующих лишь внешний интерфейс класса. Конечно, причина этого кроется в необходимости знать размер объекта при инстанцировании, но знание причины проблемы не решает саму проблему.

Попытаемся использовать мощь современного С++, чтобы побороть этот недостаток. Заинтереснванных прошу под кат.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/1d7/582/d15/1d7582d1512d463685b31e942b909a81.gif
[2]: https://habrahabr.ru/post/312148/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut