История изменений
Исправление hobbit, (текущая версия) :
Далее, если ты внимательно посмотришь на эти типы данных... например, в ядре линукса, в файле device.h определён тип структуры device, который включает в себя указатели на другие структуры. В нём же есть указатель на функцию release, который заполняется функцией, создающей экземпляр device («инстанс»).
По сути дела, device - это недокласс. Авторы ядра не хотели использовать плюсы, желая оставить за собой полный контроль над логикой ядра. Их право. Но то, что они нарисовали - это в чистейшем виде ООП с полиморфизмом и таблицей виртуальных методов, просто реализованное не на ОО-языке.
На крестах подобная запись была бы просто более лаконичной, понятной, и с контролем от некоторых ошибок (но, возможно, с неприемлемой для ядра ОС избыточностью реализации).
Исходная версия hobbit, :
Далее, если ты внимательно посмотришь на эти типы данных... например, в ядре линукса, в файле device.h определён тип структуры device, который включает в себя указатели на другие структуры. В нём же есть указатель на функцию release, который заполняется функцией, создающей экземпляр device («инстанс»).
По сути дела, device - это недокласс. Авторы ядра не хотели использовать плюсы, желая оставить за собой полный контроль над логикой ядра. Их право. Но то, что они нарисовали - это в чистейшем виде ООП с полиморфизмом и таблицей виртуальных методов, просто реализованное не на ОО-языке.