LINUX.ORG.RU

Вызов переопределенного метода через объект производного класса

 , , , опп


1

2

Собственно ответ нашел (https://stackoverflow.com/a/6319619).

struct Base
{
    virtual int Foo()
    {
        return -1;
    }
};

struct Derived : public Base
{
    virtual int Foo()
    {
        return -2;
    }
};

int main(int argc, char* argv[])
{
    Base *x = new Derived;

    ASSERT(-2 == x->Foo());

    //syntax is trippy but it works
    ASSERT(-1 == x->Base::Foo());

    return 0;
}

Но интересно, такая форма описана в каком-нибудь стандарте?

★★★★★

В общем-то это вполне логичная форма если понимать как устроены объекты в C++.

oldstable
()

ASSERT(-1 == x->Base::Foo());

Если тебе вдруг понадобилось сделать так, значит ты нахеровертил в дизайне.

UVV ★★★★★
()

Но интересно, такая форма описана в каком-нибудь стандарте?

Ты правда думаешь что нашёл что-то настолько экзотическое, что оно не описано в стандарте?

anonymous
()

такая форма описана в каком-нибудь стандарте?

Там стандарт на 1.4K страниц.

BceM_IIpuBeT ★★☆☆☆
()
Последнее исправление: BceM_IIpuBeT (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ты правда думаешь что нашёл что-то настолько экзотическое, что оно не описано в стандарте?

Нет. Просто интересно.

rumgot ★★★★★
() автор топика

Это фигня, приходи, когда увидишь вызов шаблонного метода шаблонного класса из шаблонной функции, а-ля

x.template Foo<T>();

fluorite ★★★★★
()
Ответ на: комментарий от t184256

Не будь таким высокомерным. Программирование - не единственная вещь в жизни, и уж точно не самая важная.

rumgot ★★★★★
() автор топика
Ответ на: комментарий от rumgot

Согласен, не самая, но не вижу связи с моим комментом. Тред дополнить нечем.

t184256 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.