Ich frage mich, ob es Vorteile gibt, eine statische Elementfunktion zu verwenden, wenn es ein nicht statisches Äquivalent gibt. Führt dies zu einer schnelleren Ausführung (weil Sie sich nicht um alle Mitgliedsvariablen kümmern müssen) oder weniger Speicherbedarf (weil sie nicht in allen Instanzen enthalten sind)?Vorteil der Verwendung einer statischen Elementfunktion anstelle einer äquivalenten nicht statischen Elementfunktion?
Grundsätzlich ist die Funktion, die ich betrachte, eine Dienstprogrammfunktion, um ein Integer-Array zu drehen, das Pixelfarben mit einer beliebigen Gradzahl um einen beliebigen Mittelpunkt darstellt. Es befindet sich in meiner abstrakten Bullet-Basisklasse, da nur die Bullets es verwenden werden und ich nicht den Overhead haben wollte, es in einer Utility-Klasse aufzurufen. Es ist ein bisschen zu lang und in jeder einzelnen abgeleiteten Bullet-Klasse verwendet, so dass es wahrscheinlich keine gute Idee zu inline ist. Wie würden Sie vorschlagen, dass ich diese Funktion definiere? Als statische Member-Funktion von Bullet, einer nicht-statischen Member-Funktion von Bullet, oder vielleicht nicht als Mitglied von Bullet, aber außerhalb der Klasse in Bullet.h definiert? Was sind die Vor- und Nachteile von jedem?
Ja, ich bin mir nicht sicher, wie C++ funktioniert. Ich komme aus einem Flash-Hintergrund und ActionScript hat schreckliche Gemeinkosten an den seltsamsten Orten - statische Funktionen in Utility-Klassen werden zur Laufzeit aufgelöst, so wie Math.sin bei jeder Verwendung muss der Spieler die Math-Klasse durch die Hashtabelle finden und dann finden sin-Funktion.Ich bin froh zu hören, dass C++ zumindest einen gesunden Menschenverstand hat. – jonathanasdf
@Zan: statische Elementfunktionen haben keinen "this" -Zeiger. –
Tatsächlich hast du recht. Ich habe die Zeile gelesen, auf die ich geantwortet habe: "Es gibt absolut keinen Leistungsunterschied zwischen Elementfunktionen und freien Funktionen." was nicht genau das ist, was es sagt. Mein Fehler. –