виртуальный невиртуальный метод.
От: pavard  
Дата: 29.01.14 21:28
Оценка: -9
как объяснить вторую напечатанную строку? и почему она отличается от третей. )

#include <iostream>

struct Iface
{
    virtual void Func() = 0;
};

struct reg_t : Iface
{
    void Func()
        { std::cout << __PRETTY_FUNCTION__ << "\n"; }
};

struct bus_t : reg_t
{
    void Func()
        { std::cout << __PRETTY_FUNCTION__ << "\n"; }
};

int main()
{
    bus_t b;
    reg_t & r = static_cast< reg_t & >( b );

    b.Func();
    r.Func();
    r.reg_t::Func();
}


От модератора.
Как выяснилось, это не проблема, с которой топикстартер столкнулся, а вопрос, придуманный им для собеседований.
Вступая в дискуссию, делайте поправку на этот факт.

31.01.14 10:03: Перенесено из 'C/C++'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.