Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, k.o., Вы писали:
KO>>А ты про empty base class optimization, не слышал? Или про ADL?
VD>Тип решил поразить широтой своих познаний?
Нет, просто хотел напомнить, что в некоторых языках, всё, к сожалению, не так просто.
VD>Если я правильно понял первый базворд относится к борьбе за размеры экземпляров типов основанную на опитимизациях которые делают отдельные компиляторы — говоря проще занятие ерундой.
Имхо, для того чтобы называть программирование на C++ занятием ерундой есть другой
форум. Для тех же кому этим приходится заниматься, размер занимаемой памяти иногда имеет очень важное значение.
VD>Второе ADL (Argument-dependent name lookup) вообще никакого отношения к делу не имеет, так как относится к алгоритму разрешения перегрузки операторов и функций.
Этот алгоритм будет искать функции в том числе и в пространствах имён всех предков класса, включая закрытых и защищенных. Поэтому, я думаю, это имеет отношение к использованию наследования.
KO>>В C++ наследование, всё-таки, даёт некоторые возможности, которые с помощью аггрегации не получишь. Между прочим, кто сказал, что единственное назначение наследования это выражение отношения тип — подтип согласно LSP?
VD>В C++, как и в любом другом ООЯ можно использовать ООП по делу — для реализации иерархий классов предметной области и для реализации Абстрактных Типов Данных. А можно не по делу.
ООП это одно, а конкретные языковые конструкции несколько другое. Можно использовать их для ООП, а можно и для других целей.
VD>Забавно то, что когда кто-то видит как кто-то другой пытается вырезать гланды автогеном и через жопу, то он смеется или возмущается. А когда тоже самое делается в области программирования, то мало того, что никто не удивляется, но еще и поясняется товарищи которые с умным видом начинают защищать это увлекательное занятие.
И правда, забавно, только я надеюсь ты меня к таким товарищам не причисляешь?
KO>>B. Liskov "Data Abstraction and Hierarchy"
KO>>KO>>We are using the words "subtype" and "supertype" here to emphasize that now we are talking about
KO>>a semantic distinction. By contrast, "subclass" and "superclass" are simply linguistic concepts in
KO>>programming languages that allow programs to be built in a particular way. They can be used to
KO>>implement subtypes, but also, as mentioned above, in other ways.
VD>И что же ты тут такого вычитал?
Что назначение такой языковой конструкции как наследование не сводится к выражению отношения тип — подтип. А что ещё тут можно вычитать?