我们都知道C++11中有std::make_shared,却没有std::make_unique,在C++14已经改善。
struct A {};
std::unique_ptr<A> ptr = std::make_unique<A>();
在C++14中加入了std::make_unique用于创建std::unique_ptr类型的对象,其优点包括避免使用new运算符、避免重复定义类型、提高代码的异常安全性等。在使用时,只需要在make_unique中添加需要创建对象的类型及其参数即可,如std::make_unique(5),表示创建一个值为5的int类型对象,并将其封装在std::unique_ptr对象中。需要注意的是,在引用std::make_unique时需要加上std前缀,避免与自定义实现的冲突,且make_unique不支持创建数组对象以及自定义删除器。
std是类名呀,类声明在头文件里,而函数定义在.c文件里,必然要加std::表示这个函数是定义在std类里的成员函数
不加就是定义到.c文件里了
前面类型是个结构体,括号里是结构体成员,结构体的类型和成员类型都是在std里定义的,所以都要加std前缀,否则会报错找不到类型