Vidéo: ❖ The Big M Method : Maximization with Mixed Constraints ❖ 2024
Comme C ++ passe la valeur de l'argument, vous ne pouvez pas le différencier par const-ness. Dans ce qui suit, ce qui est réellement passé à maximum () sont les valeurs 2. 0 et 0. 0. La fonction maximum () ne peut pas dire si ces valeurs proviennent d'une variable comme dArg ou d'une constante comme 0. 0. < double maximum (double d1, double d2); void otherFunction () {double dArg = 2. 0; double dNonNegative = maximum (dArg, 0. 0);
Vous
pouvez déclarer les arguments d'une fonction à const. Une telle déclaration signifie que vous ne pouvez pas modifier la valeur de l'argument dans la fonction. Ceci est démontré dans l'implémentation suivante de maximum (double, double):
L'affectation à d1 et d2 n'est pas autorisée car les deux ont été déclarées const et ne sont donc pas modifiables.
Ce qui n'est pas légal est le suivant:
// ces deux fonctions ne sont pas assez différentes pour être distinguées double maximum (double d1, double d2); double maximum (const double d1, const double d2); void otherFunction () {double dArg = 2. 0; // C ++ ne sait pas laquelle des fonctions ci-dessus appelle double dNonNegative = maximum (dArg, 0. 0);
Ici, C ++ n'a aucun moyen de différencier les deux lorsque vous faites l'appel.