Czytałem moją książkę C++ (Deitel), gdy natknąłem się na funkcję do obliczania objętości sześcianu. Kod jest następujący:Czy "const" nie jest nadmiarowy podczas przekazywania wartości?
double cube (const double side){
return side * side * side;
}
Wyjaśnienie za pomocą „const” kwalifikator było to jedno: „const kwalifikacje powinny być wykorzystywane do egzekwowania Zasada najmniejszego uprzywilejowania, informując kompilator, że funkcja nie modyfikuje strona zmienna ".
Moje pytanie: czy użycie "const" nie jest tu zbędne/niepotrzebne, ponieważ zmienna jest przekazywana przez wartość, więc funkcja nie może jej zmodyfikować?
Znaczenie 'const' tutaj jest to, że nie można zmodyfikować' 'side' parametru wewnątrz sześcianu()' metody, aby uniknąć nieoczekiwanego zachowania. –
Czasami sprawy dotyczą raczej "dobrej praktyki" niż konieczności. Myślę, że to jeden z tych czasów. – destan
Myślę, że odpowiedzi dobrze wyjaśniły, dlaczego tak robisz, ale dodam to do zewnętrznego wywołującego, 'const' * jest * nadmiarowy i nie jest częścią sygnatury funkcji. Oznacza to, że możesz go zostawić w deklaracji funkcji bez zmiany czegokolwiek. Możesz również usunąć go później, jeśli z jakiegoś powodu chcesz, aby twój kod był mniej łatwy w utrzymaniu i nie wpłynie to na kod wywołujący. –