const Argumente sind ein ständiges Problem in C ++

Da C ++, um den Wert des Arguments geht, kann man nicht unterscheiden von const-ness. Im Folgenden was wird tatsächlich übergeben maximal() 2.0 und 0.0 sind die Werte. Das maximal() Funktion kann nicht sagen, ob diese Werte aus einer Variablen kam wie darg oder eine Konstante wie 0.0.

Doppelmaximum (Doppel d1, Doppel d2) -Lücke otherFunction () {double Darg = 2,0-double dNonNegative = Maximum (Darg, 0,0) -

Sie kann erklären die Argumente einer Funktion zu sein const. Eine solche Erklärung bedeutet, dass Sie nicht das Argument der Wert innerhalb der Funktion zu ändern. Dies wird in der folgenden Umsetzung demonstriert von Maximum (double, double):

Doppel Maximum (const double d1, const double d2) {double dResult = d1-if (d2> dResult) {dResult = d2 -} // Die folgende wäre illegald1 = 0.0- d2 = 0.0return dResult-}

Die Zuordnung zu d1 und d2 nicht zulässig ist, weil beide erklärt wurden const und sind daher nicht geändert werden.

Was nicht legal ist, ist die folgende:

// Diese beiden Funktionen sind nicht unterschiedlich genug distinguisheddouble Maximum (Doppel d1, Doppel d2) -double Maximum (const double d1, const double d2) -Lücke otherFunction () {double Darg = 2,0 zu sein - // C ++ nicht weiß, die eine der oben genannten Funktionen zu calldouble dNonNegative = Maximum (darg, 0,0) -

Hier C ++ hat keine Möglichkeit, zwischen den beiden zu unterscheiden, wenn Sie den Anruf zu tätigen.

Menü