Ich habe ein Thema, ich bin verwirrt auf, dass ich einige näher zu erarbeiten brauche. Der Operator überlädt mit einer const-Version und einer nicht-const-Version.Const und nicht-Const Operator Overloading
// non-const
double &operator[](int idx) {
if (idx < length && idx >= 0) {
return data[idx];
}
throw BoundsError();
}
Ich verstehe, dass diese Funktion Teil einer Klasse, einen Index nimmt, und überprüft, dass seine logische, den Index der Arraydaten in der Klasse gibt. Es gibt auch eine Funktion mit dem gleichen Körper aber mit der Funktionsaufruf als
Warum brauchen wir zwei Version?
Diese Beispielfrage könnte auch hilfreich sein. Welche Version wird jeweils unten verwendet?
Array a(3);
a[0] = 2.0;
a[1] = 3.3;
a[2] = a[0] + a[1];
Meine Hypothese, dass die const-Version nur auf a[2]
genannt, weil wir a[0]
oder a[1]
nicht riskieren wollen ändern.
Danke für jede Hilfe.
Sie können leicht überprüfen, welche mit Ausgabe in ihnen aufgerufen wird. – chris
es ist in einer Vorlesung Folie so habe ich gehofft, ich würde nicht eine Klasse erstellen müssen, um sie zu nutzen, stattdessen nur jemand mir helfen zu verstehen, warum wir das tun –
Sei nicht faul, probier es selbst aus, du wirst dich erinnern besser. –