Hampir setiap kata yang Anda anggap menambahkan sebagai kata kunci ke bahasa hampir pasti telah digunakan sebagai nama variabel atau bagian lain dari kode kerja. Kode ini akan rusak jika Anda menjadikan kata itu kata kunci.
Hal yang sangat beruntung tentang auto
adalah sudah kata kunci, jadi orang tidak memiliki variabel dengan nama itu, tetapi tidak ada yang menggunakannya, karena itu adalah default. Mengapa mengetik:
auto int i=0;
kapan
int i=0;
berarti hal yang persis sama?
Saya kira di suatu tempat di planet ini ada sejumlah kecil kode yang menggunakan 'otomatis' dengan cara lama. Tapi itu bisa diperbaiki dengan menghapus 'otomatis' dan itu akan berfungsi lagi. Jadi itu adalah pilihan yang cukup jelas untuk menggunakan kembali kata kunci.
Saya juga kebetulan berpikir itu adalah makna yang lebih jelas. Jika Anda telah bekerja dengan varian dan semacamnya, ketika Anda melihat var
Anda mungkin berpikir bahwa deklarasi tersebut entah bagaimana diketik kurang kuat daripada jika Anda menekan semua tombol sendiri pada keyboard untuk menentukan jenis variabel. Untuk saya,auto
jelaskan bahwa Anda meminta kompiler untuk secara otomatis menyimpulkan tipe, yang sama kuatnya seperti jika Anda telah menentukannya sendiri. Jadi itu adalah keberuntungan yang sangat beruntung yang membuat nama baik tersedia untuk panitia.
Untuk mengklarifikasi pelanggaran (kecil):
Jika kamu punya
auto int i=0;
dan mencoba mengkompilasi dengan kompiler C ++ 11, Anda sekarang akan mendapatkan kesalahan seperti
kesalahan C3530: 'otomatis' tidak dapat digabungkan dengan jenis-penentu lainnya
Ini sepele, Anda cukup menghapus auto atau int dan mengkompilasi ulang.
Namun ada masalah yang lebih besar. Jika kamu punya
auto i = 4.3;
C dan C ++ benar-benar tua akan membuat i
sebuah int
(karena akan jika Anda tinggalkan auto
- deklarasi standar itu int
). Jika Anda telah berjalan sangat lama tanpa mengkompilasi kode ini, atau telah menggunakan kompiler lama, Anda dapat memiliki beberapa kode ini, setidaknya secara teori. C ++ 11 akan membuatnya double
karena itulah yang 4.3. (Atau mungkin a float
, saya masih dalam mode Boxing Day, tapi intinya, bukan int
.) Ini mungkin memperkenalkan bug halus di seluruh aplikasi Anda. Dan tanpa peringatan atau kesalahan dari kompiler. Orang-orang di kapal ini harus mencari secara global untuk auto
memastikan mereka tidak menggunakannya dengan cara lama sebelum mereka pindah ke kompiler C ++ 11. Untungnya, kode seperti itu sangat jarang.
auto
mungkin merusak kompatibilitas ke belakang, tetapi, tergantung pada seberapa seringvar
digunakan sebagai nama variabel dibandingkan dengan seberapa seringauto
kata kunci digunakan dalam kode pra-11, panitia mungkin berpendapat bahwa itu merusak kompatibilitas kurang dramatis daripada memperkenalkan yang baru kata kunci akan.