Bagaimana untuk Melaksanakan `make_unique` dalam C 11 untuk Pengurusan Pemilikan Dipertingkatkan?

Barbara Streisand
Lepaskan: 2024-10-30 09:32:27
asal
373 orang telah melayarinya

How to Implement `make_unique` in C  11 for Enhanced Ownership Management?

Pelaksanaan Tersuai make_unique dalam C 11

make_unique ialah fungsi utiliti yang diperkenalkan dalam C 14 untuk mencipta objek_ptr unik dengan contoh yang diperuntukkan secara dinamik . Ini berguna apabila penunjuk mentah tidak diingini dan pengurusan pemilikan diperlukan. Walau bagaimanapun, jika pengkompil anda tidak menyokong make_unique, ia boleh dilaksanakan dengan mudah menggunakan fungsi templat tersuai.

Untuk menulis make_unique, pengisytiharan templat berikut digunakan:

<code class="cpp">template< class T, class... Args >
unique_ptr<T> make_unique( Args&&... args );</code>
Salin selepas log masuk

Templat ini memerlukan jenis T dan bilangan pembolehubah argumen Args. Pelaksanaan berikut mencipta objek unique_ptr dengan contoh T baharu yang dibina menggunakan argumen yang disediakan:

<code class="cpp">template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}</code>
Salin selepas log masuk

The std::forward sintaks digunakan untuk memastikan pemajuan argumen yang sempurna kepada pembina. Dengan memanggil std::forward, peraturan runtuh rujukan tidak digunakan dan rujukan lvalue atau rvalue dikekalkan.

Pelaksanaan tersuai make_unique ini meniru gelagat versi standard, membolehkan anda mencipta objek_ptr unik dalam C 11 persekitaran yang make_unique tidak disokong.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan `make_unique` dalam C 11 untuk Pengurusan Pemilikan Dipertingkatkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!