LINUX.ORG.RU

История изменений

Исправление jeuta, (текущая версия) :

минусы: производительность, по крайней мере debug-сборок, усложнённость клиентского кода (того, что у тебя в main)

сравни с:

#include <iostream>

using namespace std;

class A
{
public:
    virtual int getType () { return 1; }
};

class B : public A
{
    int getType () { return 2; }
};


int main()
{
    A a;
    B b;
    A* arr[2] = {&a, &b};
    for(int i = 0; i < 2; ++i)
    {
        cout << arr[i]->getType() << endl;
    }
}

Исходная версия jeuta, :

минусы: производительность, по крайней мере debug-сборок, усложнённость клиентского кода (того, что у тебя в main)

сравни с:

#include <iostream>

using namespace std;

class A
{
public:
    virtual int getType () { return 1; }
};

class B : public A
{
    int getType () { return 2; }
};


int main()
{
    A a;
    B b;
    A* arr[2] = {&a, &b};
    for(int i = 0; i < 2; ++i)
    {
        cout << arr[i]->getType() << endl;
    }
}