Video: Innovating to zero! | Bill Gates 2024
Karena C ++ melewati nilai argumen, Anda tidak dapat membedakannya dengan const-ness. Berikut ini, apa yang sebenarnya dilewatkan ke maksimum () adalah nilai 2. 0 dan 0. 0. Fungsi maksimum () tidak dapat membedakan apakah nilai-nilai ini berasal dari variabel seperti dArg atau konstanta seperti 0. 0. < double maximum (double d1, double d2); void otherFunction () {double dArg = 2. 0; double dNonNegative = maksimum (dArg, 0. 0);
Anda
dapat menyatakan argumen fungsi untuk menjadi const. Pernyataan seperti itu berarti Anda tidak dapat mengubah nilai argumen di dalam fungsi. Hal ini ditunjukkan dalam implementasi maksimum berikut (double, double):
Penugasan ke d1 dan d2 tidak diperbolehkan karena keduanya telah dinyatakan const dan oleh karena itu tidak dapat diubah.
Apa yang tidak sah adalah sebagai berikut:
// kedua fungsi ini tidak cukup berbeda untuk dibedakan maksimum ganda (d1 ganda, d2 ganda); maksimum ganda (const double d1, const double d2); void otherFunction () {double dArg = 2. 0; // C ++ tidak tahu fungsi mana yang memanggil nomor ganda dNonNegative = maximum (dArg, 0. 0);
Di sini C ++ tidak memiliki cara untuk membedakan keduanya saat Anda menelepon.