Rumah >pembangunan bahagian belakang >C++ >Bilakah Kata Kunci `typename` C Diperlukan?

Bilakah Kata Kunci `typename` C Diperlukan?

Susan Sarandon
Susan Sarandonasal
2024-12-21 18:07:11724semak imbas

When is the C   `typename` Keyword Necessary?

Bilakah kata kunci "typename" diperlukan?

Dalam C , kata kunci "typename" diperlukan apabila merujuk kepada nama bersarang yang merupakan nama bergantung, iaitu bersarang di dalam contoh templat dengan parameter yang tidak diketahui.

A nama bergantung ialah nama yang tidak boleh diselesaikan sepenuhnya pada masa penyusunan kerana ia bergantung pada parameter templat. Contohnya, dalam 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();
}

Nama vektor

::iterator ialah nama bergantung kerana ia bergantung pada parameter templat K. Pada masa penyusunan, pengkompil tidak mengetahui nilai daripada K, jadi ia tidak dapat menyelesaikan sepenuhnya vektor nama

::iterator.

Kata kunci "typename" digunakan untuk memberitahu pengkompil bahawa nama vektor

::iterator ialah nama jenis, walaupun ia tidak dapat diselesaikan sepenuhnya pada masa penyusunan. Ini perlu kerana pengkompil perlu mengetahui jenis pembolehubah p untuk menghasilkan kod yang betul.

Terdapat kes lain di mana "nama taip" mesti dinyatakan, seperti apabila merujuk kepada jenis bersarang yang diisytiharkan di dalam kelas templat. Contohnya, dalam kod berikut:

template<class T>
struct A {
    typedef typename T::type my_type;
};

Nama jenis nama T::jenis ialah nama jenis bersarang yang diisytiharkan di dalam kelas templat A. Pada masa penyusunan, pengkompil tidak mengetahui jenis T, jadi ia tidak dapat menyelesaikan sepenuhnya nama taip T::type.

Kata kunci "typename" digunakan untuk memberitahu pengkompil bahawa nama typename T::type ialah jenis nama, walaupun ia tidak dapat diselesaikan sepenuhnya pada masa penyusunan. Ini perlu kerana pengkompil perlu mengetahui jenis pembolehubah my_type untuk menjana kod yang betul.

Atas ialah kandungan terperinci Bilakah Kata Kunci `typename` C Diperlukan?. 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