потому что если ваш базовый класс имеет чисто виртуальный метод, то static_cast не разрешается.

ющий шаблон в порядке / безопасно? Или есть какие-то недостатки? (Я также использую это для операторов равенства)

Derived& operator=(const Derived& rhs)
{
    static_cast<Base&>(*this) = rhs;
    // ... copy member variables of Derived
    return *this;
}

Ответы на вопрос(3)

Ваш ответ на вопрос