Rumah > pembangunan bahagian belakang > C++ > Mengapakah `std::make_unique` merupakan tambahan yang berharga kepada C walaupun kerumitannya?

Mengapakah `std::make_unique` merupakan tambahan yang berharga kepada C walaupun kerumitannya?

DDD
Lepaskan: 2024-12-16 06:06:16
asal
629 orang telah melayarinya

Why is `std::make_unique` a valuable addition to C   despite its complexity?

std::make_unique: Kemudahan Perpustakaan Standard yang Hilang

Pustaka standard C 11 tidak mempunyai templat fungsi std::make_unique, meninggalkan pembangun menulis kod verbose untuk mencipta petunjuk unik. Pertimbangkan contoh berikut:

std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
Salin selepas log masuk

Untuk mengurangkan keterlaluan ini, sesetengah pembangun telah mencadangkan fungsi make_unique:

auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
Salin selepas log masuk

Sintaks ini menyembunyikan pengendali baharu dan menyebut jenisnya sekali sahaja.

Walau bagaimanapun, melaksanakan fungsi sedemikian memerlukan pemahaman selok-belok pemajuan yang sempurna. Khususnya, ungkapan std::forward:

std::forward<Args>(args)...
Salin selepas log masuk

melibatkan operasi berikut:

  • std::forward ialah ungkapan transformasi jenis yang memajukan sebarang rujukan lvalue atau rvalue Args kepada hasilnya.
  • std::forward(args) ialah ungkapan panggilan fungsi yang menyimpulkan dan membina Args dengan memajukan argumen yang sepadan dalam args.
  • ... membongkar hujah yang dimajukan ke dalam parameter pek.

Ringkasnya, std::forward<Args>(args)... membenarkan pemajuan argumen yang sempurna kepada pembina.

Atas ialah kandungan terperinci Mengapakah `std::make_unique` merupakan tambahan yang berharga kepada C walaupun kerumitannya?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan