Здравствуйте VladD2, вы писали:
VD>Здравствуйте Шестаков Александр, вы писали:
O>>>А вообще в книжках по основам COM пишут, что никаких версий у интерфейса нет, что-то поменял, меняй GUID и это уже другой интерфейс
VD>Ага! Вот только с GUID-ми в шарпе туго :).
VD>По делу же могу сказать, что читайте описания в первоисточника... VD>Интерфейс (в COM) есть некая абстракция (для человека) и бинарный стандарт, гарантирующий местоположение методов и описывающий стандарт укладки параметров в стек (или регистры).
VD>Абстрактный класс есть класс, все методы которого не определены. Физически для реализации интерфейсов была взята MS-ная реализация VTbl-а то есть абстрактный класс может использоваться для реализации COM-интерфейсов а может и не являться. Улавливаете?
VD>Стандарт C++ не гарантирует ни то, что методы в VTbl будут расположены в соответствии с их расположением в описании класс ни саму реализацию виртуальных функций через VTbl. C++ — это не бинарный стандарт, а Interface в COM бинарный. То что большинство современных компиляторов похоже на VC, это уж следствие лидерства MS и популярности COM
Привет всем! Я могу сказать что имеено это написанно в такой книжечке как "Основы COM" [Дейл Роджерсон].
Она не толстая и понятная, хотя не новая.
VD>Идея интерфейсов вообще не подразумевает ни классов, ни наследования (они поддерживаются даже в голом C).
VD>.Net пока что не поддерживает множественного наследования. А по мне, чем замораживаться с абстрактными классами, лучше использовать простую и понятную концепцию интерфейса. Причем интерфейса как абстракции, а не как конкретной реализации.