Video: Biblical Series II: Genesis 1: Chaos & Order 2024
Deoarece C ++ trece valoarea argumentului, nu se poate diferenția prin const-ness. În cele ce urmează, ceea ce trece de fapt la maximum () sunt valorile 2. 0 și 0. 0. Funcția maximum () nu poate spune dacă aceste valori provin dintr-o variabilă ca dArg sau o constantă ca 0. 0. < maxim dublu (dublu d1, dublu d2); void otherFunction () {dublu dArg = 2; dublu dNonNegativ = maxim (dArg, 0. 0);
Puteți
să declara argumentele unei funcții ca fiind const. O astfel de declarație înseamnă că nu puteți modifica valoarea argumentului în cadrul funcției. Acest lucru este demonstrat în următoarea implementare a maximului (dublu, dublu):
Atributul pentru d1 și d2 nu este permis deoarece ambele au fost declarate const și deci nu pot fi schimbate.
Ceea ce nu este legal este următorul:
// aceste două funcții nu sunt suficient de diferite pentru a se distinge maxim dublu (dublu d1, dublu d2); maxim dublu (const dublu d1, const dublu d2); void otherFunction () {dublu dArg = 2; // C ++ nu știe care dintre funcțiile de mai sus să numească dublu dNonNegative = maximum (dArg, 0. 0);
Aici C ++ nu are nici un fel de diferențiere între cele două atunci când faceți apelul.