Rumah >pembangunan bahagian belakang >C++ >Bilakah Kata Kunci 'nama taip' Diperlukan dalam Templat C?
Mengapakah Kata Kunci "typename" Diperlukan?
Dalam pengaturcaraan, adalah perkara biasa untuk menggunakan nama bersarang, di mana nama satu entiti ( cth., kelas) disertakan dalam nama entiti lain (cth., fungsi ahli). Walaupun sarang ini biasanya cukup untuk membezakan entiti mana yang dirujuk, terdapat kes di mana pengkompil memerlukan spesifikasi eksplisit.
Penjelasan Kata Kunci "typename"
"typename" " kata kunci digunakan untuk mengisytiharkan secara eksplisit bahawa nama bersarang merujuk kepada jenis. Ini perlu apabila pengkompil tidak boleh membuat kesimpulan jenis nama bersarang daripada konteks. Nama bersarang sedemikian dikenali sebagai "nama bergantung."
Nama bersarang menjadi bergantung apabila ia digunakan dalam contoh templat dengan parameter yang tidak diketahui. Dalam situasi ini, pengkompil tidak mempunyai maklumat yang mencukupi untuk menentukan jenis khusus nama bersarang sehingga parameter templat diketahui.
Contoh
Pertimbangkan kod berikut :
template<class K> class C { struct P {}; vector<P> vec; void f(); }; template<class K> void C<K>::f() { typename vector<P>::iterator p = vec.begin(); }
Dalam contoh ini, kata kunci "typename" diperlukan kerana nama bersarang "iterator" bergantung pada parameter templat "K." Tanpa kata kunci "typename", pengkompil tidak akan tahu bahawa "iterator" merujuk kepada jenis "vector
::iterator."
Kes Lain yang Memerlukan "typename"
Selain contoh di atas, kes lain di mana "nama taip" diperlukan termasuk:
Atas ialah kandungan terperinci Bilakah Kata Kunci 'nama taip' Diperlukan dalam Templat C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!