Parameter in Initialisierungsliste zuweisen?
-
Hallo
Also folgendes: Habe eine Klasse nennen wir Sie mal ClassA
class ClassA { ClassA(double param1, int param2); double m_val1; int m_val2; };
Diese Klasse besitzt nun einen Konstruktor dem 2 Werte übergeben werden.
Werden diese Werte nun in der Initialisierungsliste den beiden Membervariablen zugewiesen.ClassA::ClassA(double param1, int param2) : m_val1(param1) , m_val2(param2) { }
oder wird in der Initialisierungsliste nur die Werte z.B. auf 0 vorinitialisiert und in Rumpf die Werte zugewiesen.
ClassA::ClassA(double param1, int param2) : m_val1(0.0) , m_val2(0) { m_val1 = param1; m_val2 = param2; }
Was ist richtig. bzw richtiger
-
Beides hat den gleichen Effekt.
Die erste Variante ist aber eindeutig eleganter, pflegeleichter und je nach Compiler auch effizienter.ClassA::ClassA(double param1, int param2) : m_val1(param1) , m_val2(param2) { }
-
ClassA::ClassA(double param1, int param2) : m_val1(param1*5) , m_val2(param2+3) { }
Auch das hier?
-
y-vonne schrieb:
ClassA::ClassA(double param1, int param2) : m_val1(param1*5) , m_val2(param2+3) { }
Auch das hier?
vs
ClassA::ClassA(double param1, int param2) : m_val1(0.0) , m_val2(0) { m_val1 = param1 * 5; m_val2 = param2 + 3; }
Ja! Die erste Variante initialisiert m_val1/2 ja tatsächlich mit den richtigen Werten, der Konstruktor-Rumpf wird dan ggf gar nicht mehr ausgeführt.