Video: Student Vs. Teacher (2019) 2025
Vì C ++ truyền giá trị của đối số, bạn không thể phân biệt được bởi const-ness. Sau đây, những gì thực sự được truyền cho maximum () là các giá trị 2. 0 và 0. 0. Chức năng maximum () không thể nói được liệu các giá trị này có xuất phát từ một biến như dArg hay một hằng số như 0. 0. < tăng gấp đôi (gấp đôi d1, gấp đôi d2); void otherFunction () {double dArg = 2. 0; double dNonNegative = tối đa (dArg, 0. 0);
Bạn
có thể tuyên bố các đối số của một hàm là const. Khai báo như vậy có nghĩa là bạn không thể thay đổi giá trị của đối số bên trong hàm. Điều này được chứng minh trong việc thực hiện sau đây của tối đa (đôi, đôi):
Việc gán đến d1 và d2 không được phép vì cả hai đã được tuyên bố const và do đó không thay đổi.
Điều gì không hợp lệ là như sau:
/ / hai chức năng này không phải là khác nhau, đủ để được phân biệt tối đa gấp đôi (đôi d1, đôi d2); tăng gấp đôi (const double d1, const double d2); void otherFunction () {double dArg = 2. 0; // C ++ không biết hàm nào trong số các hàm trên gọi double dNonNegative = maximum (dArg, 0. 0);
Ở đây C + + không có cách nào khác biệt giữa hai khi bạn thực hiện cuộc gọi.