когда может потребоваться менять определения виртуальных функций базового класса:
float divi = static_cast<float>(a) / b
; Вот правильный вариант
https://godbolt.org/z/YEje6Y11Y
friend double operator+(Car& c1, Car& c2);
, если её функциональность реализуется с помощью оператора приведения?