Fungsi make_unique ialah kaedah yang mudah untuk mencipta dan mengurus penunjuk unik dalam C . Ia membenarkan pengaturcara menghantar hujah terus kepada pembina objek runcing sambil memastikan pemilikan dipindahkan dengan betul. Walau bagaimanapun, sesetengah penyusun mungkin tidak menyokong make_unique secara asli. Dalam kes sedemikian, adalah perlu untuk melaksanakan versi tersuai bagi fungsi tersebut.
Untuk melaksanakan fungsi make_unique tersuai, anda boleh menggunakan coretan kod berikut:
template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }
Pelaksanaan tersuai ini menggunakan unique_ptr perpustakaan standard dan baharu untuk mencipta penunjuk unik. Ia memajukan hujah kepada pembina objek runcing menggunakan std::forward, memastikan pemindahan nilai yang betul.
Fungsi make_unique tersuai beroperasi sama dengan versi asli. Walau bagaimanapun, ia mungkin mempunyai beberapa had dalam senario tertentu. Perlu diingat bahawa fungsi make_unique asli yang ditambahkan dalam C 14 menangani kes kelebihan tertentu dan pengoptimuman yang mungkin tidak terdapat dalam pelaksanaan tersuai.
Pelaksanaan tersuai alternatif, yang menyediakan lebih fleksibiliti dan mengendalikan tatasusunan, boleh didapati dalam jawapan yang diterima oleh sasha.sochka pada Stack Overflow:
template <typename T> std::unique_ptr<T> make_unique(T* ptr) { return std::unique_ptr<T>(ptr); } template <typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }
Dengan menggunakan coretan kod yang disediakan, anda boleh melaksanakan adat fungsi make_unique dalam C 11. Walaupun pelaksanaan asli lebih disukai jika disokong oleh pengkompil anda, versi tersuai yang dibincangkan di sini menawarkan penyelesaian yang berdaya maju apabila perlu.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi `make_unique` Tersuai dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!