Rumah >pembangunan bahagian belakang >C++ >Bilakah Kata Kunci 'nama taip' Diperlukan dalam Templat C?

Bilakah Kata Kunci 'nama taip' Diperlukan dalam Templat C?

Patricia Arquette
Patricia Arquetteasal
2024-12-26 12:52:09310semak imbas

When is the

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:

  • Apabila merujuk kepada jenis bersarang dalam kelas templat
  • Apabila menggunakan nama yang layak untuk mengakses jenis
  • Apabila mengisytiharkan parameter templat templat
  • Apabila mengkhususkan templat untuk jenis tertentu

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn