Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

When does C++ use make_unique () ​

Shulou Source: shulou.com Published: 2022-06-01 19:17:30 10月04日 Update

This article mainly introduces "when does C++ use make_unique ()". In daily operation, I believe many people have doubts about when C++ uses make_unique (). The editor consulted all kinds of materials and sorted out simple and easy-to-use methods of operation. I hope it will be helpful for you to answer the doubts about when C++ will use make_unique ()! Next, please follow the editor to study!

Reason (reason)

Make_unique provides more concise build statements. It can also guarantee exception security in complex expressions.

Example (sample)

Unique_ptr p {new Foo {7}}; / / OK: but repetitive

Auto Q = make_unique (7); / / Better: no repetition of Foo

/ / Not exception-safe: the compiler may interleave the computations of / / arguments as follows:

/ /

/ / 1. Allocate memory for Foo

/ / 2. Construct Foo

/ / 3. Call bar

/ / 4. Construct unique_ptr.

/ /

/ / If bar throws, Foo will not be destroyed, and the memory-allocated / / for it will leak.

F (unique_ptr (new Foo ()), bar ())

/ / Exception-safe: calls to functions are never interleaved.

F (make_unique (), bar ())

Enforcement (implementation recommendations)

Flag the repetitive usage of template specialization list

Code that prompts you to reuse the template to initialize the list.

Flag variables declared to be unique_ptr

Prompts you to use unique_ptr to define variables.

At this point, the study of "when to use make_unique () for C++" is over. I hope I can solve your doubts. The collocation of theory and practice can better help you learn, go and try it! If you want to continue to learn more related knowledge, please continue to follow the website, the editor will continue to work hard to bring you more practical articles!

Tags: Time Clearing Learning more help Tips complexity practicality simplicity Security next Code causes variables objects suggestions situations articles methods templates Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Apple Xiaomi Shulou Tech Info macOS Shulou Technology