Retina-рендерер рисует иконки в масштабе 1 вместо 2
struct Renderer {
virtual void draw(const Icon& i, int scale = 1);
};
struct RetinaRenderer : Renderer {
void draw(const Icon& i, int scale = 2) override;
};
std::unique_ptr<Renderer> r = std::make_unique<RetinaRenderer>();
r->draw(icon);
Отладчик показывает: вызвана RetinaRenderer::draw, но scale == 1. Почему?
- Аргумент по умолчанию берётся из статического типа
- override игнорирует аргументы по умолчанию наследника
- make_unique создал объект типа Renderer
- Аргументы по умолчанию запрещены в виртуальных методах
