クラスを拡張するとき、パフォーマンスに多型とコンポジションの間に違いがありますか?クラスを拡張するときのパフォーマンスコンポジション対多型
class Window
{
public:
Window(Renderer &renderer) : m_renderer(renderer)
{ }
void update()
{
....
m_renderer.draw(this);
}
private:
Renderer &m_renderer;
}
...とポリモーフィズムを使用して:(C++で)組成物を用いて、次の例を見てください
class Window : public Renderer
{
public:
virtual ~Window() {};
void update()
{
...
draw();
}
protected:
virtual void draw() = 0;
}
組成バージョンがメンバーとして参照を使用していますので、私はそれがもう少し必要であるとしどちらのバージョンでもパフォーマンスは向上していますか?
注:私はthisのような類似の投稿をチェックアウトしましたが、パフォーマンスはカバーしていません。
ありがとうございました!
継承は、クラスのサイズが少なくとも基本クラスのサイズだけ増加することを意味します。サイズに加えて基本クラス自体を追加するのはvftableだけではありません。 –
@LuchianGrigore:はい、私はそれがステートレスだと知っているので、 'Renderer'クラスのサイズについてはわかりません。それでも、注目に値する。 –
このサイズはとにかく増えます...異なるWindows間でRendererインスタンスを共有しない限り。 –