Rumah >pembangunan bahagian belakang >C++ >Bila dan Mengapa Anda Memerlukan Kata Kunci 'nama taip' dalam Templat C?

Bila dan Mengapa Anda Memerlukan Kata Kunci 'nama taip' dalam Templat C?

Susan Sarandon
Susan Sarandonasal
2024-12-19 03:46:11276semak imbas

When and Why Do You Need the

Sintaks untuk Kata Kunci "typename"

Kata kunci "typename" digunakan dalam C apabila merujuk kepada nama bersarang yang merupakan nama bergantung , bermakna ia bersarang di dalam contoh templat dengan parameter yang tidak diketahui. Kata kunci ini secara eksplisit menyatakan bahawa nama itu mewakili jenis, terutamanya apabila entiti yang disimpulkan (nilai, jenis atau templat) adalah samar-samar.

Penggunaan "typename" dalam Nested Names

Pertimbangkan coretan 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();
}

Di sini, kata kunci "typename" adalah perlu untuk mengisytiharkan p sebagai jenis, iaitu iterator untuk vektor struct P. Tanpa "nama taip", pengkompil akan mentafsirkan vektor jujukan

::iterator sebagai ungkapan yang mewakili nilai atau fungsi, yang akan menjadi salah.

Kes Tambahan Memerlukan "nama taip"

Selain daripada nama bersarang, kata kunci "typename" juga diperlukan dalam perkara berikut senario:

  • Apabila merujuk kepada jenis hujah templat templat
  • Apabila mengisytiharkan fungsi ahli kelas templat sebagai rakan kelas templat lain
  • Apabila menentukan jenis pek parameter templat
  • Apabila menghantar nama bergantung kepada tertentu taip

Atas ialah kandungan terperinci Bila dan Mengapa Anda Memerlukan Kata Kunci 'nama taip' 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