Video: Why The War on Drugs Is a Huge Failure 2024
Eftersom C ++ passerar argumentets värde kan du inte differentiera med konstant. I det följande blir vad som faktiskt skickas till maximalt () värdena 2. 0 och 0. 0. Funktionen maximum () kan inte berätta om dessa värden kommer från en variabel som dArg eller en konstant som 0. 0. < dubbel max (dubbel d1, dubbel d2); void otherFunction () {double dArg = 2. 0; dubbel dNonNegativ = maximalt (dArg, 0. 0);
Du
kan förklara argumenten för en funktion som konst. En sådan deklaration innebär att du inte kan ändra argumentets värde inom funktionen. Detta visas i följande genomförande av maximalt (dubbel, dubbel):
Tilldelningen till d1 och d2 är inte tillåten eftersom båda har deklarerats const och därför inte kan ändras.
Det som inte är lagligt är följande:
// Dessa två funktioner är inte tillräckligt olika för att särskiljas dubbelt maximalt (dubbel d1, dubbel d2); dubbel max (const double d1, const double d2); void otherFunction () {double dArg = 2. 0; // C ++ vet inte vilken av ovanstående funktioner som kallas dubbel dNonNegative = maximum (dArg, 0. 0);
Här har C ++ ingen möjlighet att differentiera mellan de två när du ringer.