Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Множественное наследование в c++


Автор: Batbko 25.1.2011, 15:37
Кому не влом можно аргументировать smile

Автор: boostcoder 25.1.2011, 16:02
проголосовал за: Полезно исключительно при наследовании чисто абстрактных классов.
не люблю множественное наследование. или просто недорос.

Автор: Earnest 25.1.2011, 16:22
Проголосовала за "полезный прием" и "время от времени". Может быть опасно при неправильном применении или непонимании сути, так что увлекаться не стоит, но и бежать как черт от ладана тоже. Есть масса случаев, когда без множественного наследования обойтись сложно.

Автор: mes 25.1.2011, 17:39
Цитата(Earnest @  25.1.2011,  15:22 Найти цитируемый пост)
сть масса случаев, когда без множественного наследования обойтись сложно. 

smile 
чтоб исключить бытующее мнение о однобокости множественном наследования,  добавлю, что используется далеко не только в наследовании интерфейсов.. 

проголосовал 
Цитата(Earnest @  25.1.2011,  15:22 Найти цитируемый пост)
 за "полезный прием" и "время от времени".

ибо более подходящего среди пунктов нет... 



Автор: borisbn 25.1.2011, 17:46
Цитата(boostcoder @  25.1.2011,  16:02 Найти цитируемый пост)
проголосовал за: Полезно исключительно при наследовании чисто абстрактных классов.не люблю множественное наследование. или просто недорос.

хотел написать то же самое один в один, но потом увидел это и подумал, что boostcoder подаст в суд за плагиат, поэтому просто присоединяюсь к цитируемому smile


Кстати, буквально недавно столкнулся с такой проблемой ( не столько с проблемой, сколько с нюансом, о котором знал, но вот как-то и на старуху... ) :
нужно было передать из Qt-шной dll-ки в билдеровское приложение указатель на абстрактный интерфейс. По историческим причинам он передавался как int, а потом кастился к указателю. В dll-ке был класс, наследованный от QObject и от этого интерфейса. Вот так он (указатель) передавался и, ессно, ничего не работало (упрощаю для читабельности)
Код

class MyClass : public QObject, public IFace
{
...
    int getPointer() {
        return (int)this;
    }
};

переделал по "правильному" и всё заработало как надо
Код

    int getPointer() {
        return (int)(IFace*)this;
    }

Автор: GrayCardinal 25.1.2011, 17:46
Злобное зло smile Я вообще в ООП не очень, а еще чтоб множественное наследование... smile

Автор: baldina 25.1.2011, 17:48
GrayCardinal, высшая алгебра, диффуры, ассемблер, теория относительности, вышивание крестиком - это все тоже Злобное Зло

Автор: GrayCardinal 25.1.2011, 17:53
baldina, 
Не, ассемблер это наше всё smile

Добавлено через 25 секунд
А за что минуснули - то ?  smile 

Автор: baldina 25.1.2011, 18:52
Цитата(GrayCardinal @  25.1.2011,  17:53 Найти цитируемый пост)
А за что минуснули - то ?

показалось...

Автор: azesmcar 25.1.2011, 19:07
Проголосовал за "Полезно исключительно при наследовании чисто абстрактных классов", так как до сего момента не встречал других ситуаций, где множественное наследование было бы хорошим решением, но в принципе религия мне не запрещает использовать множественное наследование.

Автор: boostcoder 25.1.2011, 19:13
немного подумав, вспомнил ситуации, когда наследовал более одного класса. точнее аж два smile из которых первый - то_что наследую, и второй boost::noncopyable.
три - никогда.

Автор: mes 25.1.2011, 19:25
Цитата(boostcoder @  25.1.2011,  18:13 Найти цитируемый пост)
из которых первый - то_что наследую, и второй boost::noncopyable.

ну наконец то вспомнили про (недо-) примеси smile

Автор: GrayCardinal 25.1.2011, 20:45
Цитата

показалось... 

Всё, пора баиньки :(

Автор: Modul 25.1.2011, 21:17
Не голосовал вообще, так как крайности (злое зло) это плохо.  smile 

А пункта "пока не использовал" нет !

Из коментов видно, что применяется редко.

Автор: Earnest 26.1.2011, 08:33
Цитата(mes @  25.1.2011,  20:25 Найти цитируемый пост)
ну наконец то вспомнили про (недо-) примеси

Вот именно. Гораздо чаще (полезнее), чем множ. наследование интерфейсов. Еще очень полезно в сочетании с шаблонами.

Автор: Batbko 26.1.2011, 19:40
Всем спасибо за ваше мнение.
Извините про примеси мне как то в голову даже не пришло, т.к на практике я этот приём  ни разу не использовал.
Думаю обьясняеться это тем что я работаю в основном в рамках Qt, чьи авторы мякго говоря не злоупотребляют множественным наследованием.

Автор: mes 26.1.2011, 21:09
Цитата(Batbko @  26.1.2011,  18:40 Найти цитируемый пост)
про примеси ..  не пришло, т.к на практике я этот приём  ни разу не использовал .. в рамках Qt, чьи авторы мякго говоря не злоупотребляют множественным наследованием

не смотря на то, что рекомендовали подмешивать ui-class  smile 

Автор: Batbko 26.1.2011, 22:08
Про рекомендации нигде не слышал, но такая возможность дейсвительно есть smile , хотя в данном случае недаёт никакого преимущества перед аггрегацией без наследования.
Но, каюсь забыл smile

Автор: bsa 1.2.2011, 19:06
Цитата(Batbko @  26.1.2011,  23:08 Найти цитируемый пост)
хотя в данном случае недаёт никакого преимущества перед аггрегацией без наследования.

дает. в случае наследования писать "ui." не надо. Хотя я вообще использую указатель на ui. Чтобы не перекомпилировать все каждый раз, когда поменял атрибуты формы.

Автор: sergioK1 12.2.2011, 00:22
Цитата(Earnest @ 26.1.2011,  08:33)
Цитата(mes @  25.1.2011,  20:25 Найти цитируемый пост)
ну наконец то вспомнили про (недо-) примеси

Вот именно. Гораздо чаще (полезнее), чем множ. наследование интерфейсов. Еще очень полезно в сочетании с шаблонами.

в принципе можно и вообще без наследование обойтись,  ну писали же на С или VB.

ничего плохого в множественном наследовании не вижу, проблема не в нем а том как его грамотно юзать,
согласен с тем что  особо часто не приходиться ,

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)