Возьмем, к примеру, этот метод onChange (который переопределяет виртуальный метод):
struct SVGKnob : Knob, FramebufferWidget {
TransformWidget *tw;
SVGWidget *sw;
CircularShadow *shadow;
/** Angles in radians */
float minAngle, maxAngle;
SVGKnob();
void setSVG(std::shared_ptr<SVG> svg);
void step() override;
void onChange(EventChange &e) override;
};
Он определен в приложении здесь , как:
void SVGKnob::onChange(EventChange &e) {
dirty = true;
Knob::onChange(e);
}
Это приложение построено и работает само по себе.
Если сейчас я работаю, используя SDK, предоставленный для этого приложения (который включает заголовочный файл с тем же объявлением класса SVGKnob
)), и я создаю DLL, которая будет загружена в приложение, и я замечаю следующее:
- , если я ничего не буду делать, будет ясно, что onChange уже определено в основном приложении.
- если я переопределю в DLL свой собственный метод
SVGKnob::onChange
, он будет использоваться вместо описанного выше.
Пример:
void SVGKnob::onChange(EventChange &e) {
// some stupid code
}
Как этовозможный?Проверяется ли DLL во время выполнения, если метод переопределен и используется один DLL вместо уже существующего в приложении?
В одном и том же приложении, очевидно, я могу переопределить дважды один и тот же метод.
Я могу сделать это с помощью DLL?