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

Bilakah Kata Kunci `typename` C Diperlukan?

Susan Sarandon
Lepaskan: 2024-12-21 18:07:11
asal
801 orang telah melayarinya

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();
}
Salin selepas log masuk

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;
};
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan