std::make_unique in C++ 14
Last Updated :
22 Sep, 2023
std::make_unique is a utility function in C++ that was introduced in C++14. It is used to create a unique_ptr object, which is a smart pointer that manages the lifetime of dynamically allocated objects. It is defined inside <memory> header file.
Syntax
std::make_unique <object_type> (arguments);
Parameters
- object_type: It is the type of object you want to create.
- arguments: It is the argument list for the constructor of object_type.
Return Type
- This function returns a unique_ptr of type object_type.
It is the preferred way to create a std::unique_ptr, as it is safer than using the new operator directly because the object is automatically destroyed when it goes out of scope.
Examples of std::make_unique
The following programs demonstrate how to implement std::make_unique() in our programs.
Example 1
C++
#include <iostream>
#include <memory>
using namespace std;
class Geeks {
public :
Geeks() { cout << "Object Created\n" ; }
~Geeks() { cout << "Object Destroyed" ; }
};
void f()
{
unique_ptr<Geeks> o = make_unique<Geeks>();
}
int main()
{
f();
return 0;
}
|
Output
Object Created
Object Destroyed
Example 2
C++14
#include <iostream>
#include <memory>
using namespace std;
class Geeks {
public :
int d;
Geeks( int x)
{
this ->d = x;
cout << "Object Created\n" ;
}
~Geeks() { cout << "Object Destroyed" ; }
};
void f()
{
unique_ptr<Geeks> o = make_unique<Geeks>(10);
cout << o->d << endl;
}
int main()
{
f();
return 0;
}
|
Output
Object Created
10
Object Destroyed
Advantages of std::make_unique
- Unlike new, make_unique is exception safe.
- No cleanup is necessary if make_unique is not evaluated.
Share your thoughts in the comments
Please Login to comment...