C ++: Auswirkungen auf die Leistung von BIG-Klassen (mit viel Code)

Ich frage mich, ob und wie sich das Schreiben von "allmächtigen" Klassen in c ++ tatsächlich auf die Leistung auswirkt.

Wenn ich zum Beispiel eine Klasse habePunkt, nur mituint x; uint y; als Daten und haben praktisch alles, was Mathematik zu einem Punkt als Methoden tun kann, definiert. Einige dieser Methoden könnten sehr umfangreich sein. (Kopier-) Konstruktoren initialisieren lediglich die beiden Datenmember.

class Point
{
   int mx; int my;
   Point(int x, int y):mx(x),my(y){};
   Point(const Point& other):mx(other.x),my(other.y){};
 // .... HUGE number of methods....
};

Jetzt. Ich lade ein großes Bild und erstelle einPunkt stopfe sie für jedes Pixel in einen Vektor undbenutzen Sie. (sprich, alle Methoden werden einmal aufgerufen) Das ist nur ein blödes Beispiel!

Wäre es langsamer als die gleiche Klasse ohne die Methoden, aber mit vielen Utility-Funktionen? Ich spreche in keiner Weise von virtuellen Funktionen!

Meine Motivation dafür: Ich schreibe oft nette und relativ leistungsfähige Klassen, aber wenn ich eine Tonne von ihnen wie im obigen Beispiel initialisieren / verwenden muss, werde ich nervös. Ich denke ich sollte nicht.

Was ich zu wissen glaube, ist:

Methoden existieren nur einmal im Speicher. (Optimierungen beiseite)Die Zuordnung erfolgt nur für die Datenelemente, und sie sind das einzige, was kopiert wird.

Es sollte also keine Rolle spielen. Vermisse ich etwas?

Antworten auf die Frage(9)

Ihre Antwort auf die Frage