auto, decltype dan Deduksi Jenis
Biarkan pengkompil membuat deduksi jenis dengan auto dan decltype untuk kod yang lebih kemas.
auto, decltype dan Deduksi Jenis ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Penaakulan Jenis dalam C++ Moden
Sejak C++11, pengkompil boleh membuat penaakulan jenis di banyak tempat. Ini menjadikan kod lebih pendek dan kurang terdedah kepada ralat — apabila digunakan dengan bijak.
Kata Kunci auto
auto membuat penaakulan jenis daripada pemula pada masa kompilasi. Pemboleh ubah itu masih mempunyai jenis tetap yang diketahui secara statik.
auto i = 42; // int
auto d = 3.14; // double
auto s = "hello"; // const char*
auto v = std::vector<int>{1,2,3}; // std::vector<int>auto dan const
Secara lalai, auto menggugurkan const peringkat atas dan rujukan. Tambahkannya secara eksplisit apabila anda memerlukannya.
const int n = 10;
auto a = n; // int (const dropped)
const auto& b = n; // const int&auto dengan Lelaran
Nama jenis lelaran adalah panjang. auto sangat berguna di sini.
std::map<std::string, int> ages = {{"Ada", 30}};
auto it = ages.find("Ada");
// vs std::map<std::string,int>::iterator it = ...for Berasaskan Julat dan auto
Gunakan auto& untuk mengulang tanpa membuat salinan.
for (const auto& [name, age] : ages) {
std::cout << name << ": " << age << "\n";
}Jenis Pemulangan di Hujung
Fungsi boleh menggunakan auto sebagai ruang letak pemulangan, dengan anak panah di hujung yang menentukan jenis — berguna untuk templat.
auto add(int a, int b) -> int {
return a + b;
}Penaakulan Jenis Pemulangan C++14
C++14 membenarkan jenis pemulangan auto biasa — pengkompil membuat penaakulan berdasarkan pernyataan pemulangan.
auto multiply(double x, double y) {
return x * y; // deduced as double
}decltype: Dapatkan Jenis Ungkapan
decltype(expr) menghasilkan jenis expr pada masa kompilasi. Tidak seperti auto, ia mengekalkan rujukan dan const.
int x = 0;
int& r = x;
decltype(r) ref = x; // int&
decltype(x) val = 0; // intdecltype(auto)
Menggabungkan deduksi dengan peraturan decltype — mengekalkan jenis ungkapan yang tepat, termasuk kategori nilainya.
auto a = some_func(); // copy
decltype(auto) b = some_func(); // exact type, including referencesBila Perlu Mengelakkan auto
Elakkan auto apabila jenis yang dideduksi tidak jelas — contohnya literal angka besar, pengiraan bercampur atau saiz khusus platform. Nyatakan jenis secara jelas demi kebolehbacaan.
Gaya auto Hampir Sentiasa
Sesetengah panduan gaya mengesyorkan auto untuk semua pemboleh ubah bagi mengelakkan penukaran senyap. Panduan lain pula lebih mengutamakan jenis yang dinyatakan secara jelas. Pilih satu konvensyen dan gunakannya secara konsisten.
Semakan Pantas
Apakah perbezaan antara auto dengan decltype(auto) apabila memulangkan rujukan?
Imbas Kembali
auto membuat deduksi jenis daripada penginisialisasi; decltype melaporkan jenis sesuatu ungkapan; decltype(auto) membuat deduksi sambil mengekalkan rujukan. Gunakannya untuk mengurangkan gangguan — tetapi kekalkan kebolehbacaan.
Pelajari C++ dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “auto, decltype dan Deduksi Jenis” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “auto, decltype dan Deduksi Jenis”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “auto, decltype dan Deduksi Jenis”?
Biarkan pengkompil membuat deduksi jenis dengan auto dan decltype untuk kod yang lebih kemas. Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “auto, decltype dan Deduksi Jenis” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- auto, decltype dan Deduksi Jenis
- for Berasaskan Julat, nullptr dan enum class
- Ungkapan Lambda: Capture, Mutable, Generik
- Binding Berstruktur dan if-init C++17