std::unique_ptr
Dalam C , biasanya templat dalam perpustakaan standard perlu instantiated dengan jenis yang lengkap. Walau bagaimanapun, std::unique_ptr dan std::shared_ptr adalah pengecualian yang ketara. Mereka membenarkan instantiasi separa dengan jenis yang tidak lengkap, tetapi operasi tertentu memerlukan jenis yang lengkap.
Perbezaan ini timbul daripada kemungkinan tingkah laku yang tidak ditentukan apabila memadamkan objek daripada jenis yang tidak lengkap. Petunjuk pintar seperti std::unique_ptr dan std::shared_ptr bertujuan untuk menghalang perkara ini dengan memerlukan jenis lengkap jika perlu, memastikan pemusnah digunakan dengan betul.
Keperluan Kelengkapan Taip untuk std::unique_ptr
std::unique_ptr memerlukan jenis lengkap dalam keadaan tertentu, seperti yang diringkaskan di bawah:
**Operation | Keperluan Jenis Lengkap** | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pembina lalai | Tidak lengkap | ||||||||||||||||||||
Pembina salin | T/A (unique_ptr tidak tidak mempunyai salinan pembina) | ||||||||||||||||||||
Alihkan pembina | Tidak Lengkap | ||||||||||||||||||||
Pemusnah |
|
||||||||||||||||||||
Pembina dari penunjuk | Tidak lengkap | ||||||||||||||||||||
Salin tugasan | T/A (unique_ptr tidak mempunyai operator tugasan salinan) | ||||||||||||||||||||
Alih tugasan | Selesai | ||||||||||||||||||||
reset() | Selesai | ||||||||||||||||||||
reset(A*) | Lengkapkan |
Atas ialah kandungan terperinci Bilakah `std::unique_ptr` Memerlukan Definisi Jenis Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!