Re[6]: virtual base class для чего обычно юзается?
От: Юнусов Булат Россия  
Дата: 20.01.02 11:28
Оценка:
Спасибо всем, я правда не про абстрактные классы спросил, а про виртуальные

Кстати, насчет абстракнвых кстати на бенче тоже вопрос был:
За точную формалировку не ручаюсь, один из вариантов ответов про них был такой: "их можно юзать as references and pointers"
Ну с поинтерами понятно — в интерфейсном программировании так и делается, а вот использование их как референсов я не видел. И сам не пользовал.
Беда в том еще была что все остальные варианты овета были откровенно бредовые, тако что я поставил галочку здесь.
Потом проверить решил — оказалось правильно поставил


#include <iostream>
#include <vector>

using namespace std;

struct IRun
{
    virtual void Run() = 0;
};

struct ISetup
{
    virtual void Setup() = 0;
};

struct ITest : public IRun, public ISetup
{
};

class CTest : public ITest
{
public:
    CTest() {}
    virtual ~CTest() {}
    virtual void Setup() {}
    virtual void Run() { cout << "CTest::Run()" << endl; }
};

int main()
{
    vector <ITest *> data;
    for(int i=0; i<3; i++)
        data.push_back(new CTest);

    ITest &ref = *data.front();
    ref.Run();

    for(vector <ITest *>::iterator it = data.begin(); it != data.end(); ++it)
            delete (*it);

    data.clear();
    
    return 0;
}



Ладно, с абстрактными ясность вроде.

Насчет виртуальных базовых классов уточняю вопрос — имет ли смысл их использовать в мономорфной иерархии? Или это закончится плохо, или смысла опять таки нету просто?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.