Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Anda Menentukan Secara Eksplisit Parameter Templat dalam Pembina dalam C 03?

Bolehkah Anda Menentukan Secara Eksplisit Parameter Templat dalam Pembina dalam C 03?

Susan Sarandon
Susan Sarandonasal
2024-11-18 04:55:01925semak imbas

Can You Explicitly Specify Template Parameters in Constructors in C  03?

Spesifikasi Parameter Templat Eksplisit dalam Pembina

Walaupun keupayaan untuk pembina menjadi fungsi templat, piawaian C 03 tidak menyediakan sintaks untuk menentukan parameter templat mereka secara eksplisit. Sebaliknya, pengkompil secara automatik menentukan parameter ini berdasarkan hujah yang disediakan.

Pertimbangkan contoh berikut:

struct A {
  template<typename T>
  A() {}
};

Untuk membuat contoh kelas ini, anda tidak boleh menentukan parameter templat secara eksplisit. Sebaliknya, anda mesti bergantung pada pengkompil untuk membuat kesimpulan daripada argumen yang diserahkan kepada pembina:

A<int> a;  // Constructs an A object with template value int

Piawaian C 03 dengan jelas menyatakan:

[Nota: kerana senarai argumen templat eksplisit mengikut nama templat fungsi, dan kerana templat fungsi ahli penukaran dan templat fungsi ahli pembina dipanggil tanpa menggunakan nama fungsi, tidak ada cara untuk menyediakan senarai hujah templat eksplisit untuk templat fungsi ini.] (§14.5.2/5)

Penghadan ini mungkin menghalang usaha penyahpepijatan jika pengkompil gagal menentukan parameter templat yang betul. Spesifikasi parameter eksplisit boleh meningkatkan mesej ralat dan berpotensi menyelesaikan isu tersebut. Walau bagaimanapun, ia tidak disokong oleh piawaian C 03.

Atas ialah kandungan terperinci Bolehkah Anda Menentukan Secara Eksplisit Parameter Templat dalam Pembina dalam C 03?. 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