Unique_Ptrs语法{}

时间:2018-04-29 11:10:12

标签: c++ pointers syntax unique-ptr

我正在根据制作我正在关注的游戏的教程编写一个实体组件系统。

目前,将“实体”类的实体添加到“实体”向量的功能如下:

Entity& addEntity() { 
        Entity* e = new Entity(); 
        std::unique_ptr<Entity> uPtr{ e }; 
        entities.emplace_back(std::move(uPtr)); 
        return *e; 
    }

根据教程,代码正常运行。但是,我不确定Unique_ptr的实际语法:

std::unique_ptr<Entity> uPtr{ e }; 

{}括号内实际发生了什么?据我了解,我正在将指向e的指针指定给我的uPtr唯一指针?我真的很感激有关unique_ptr语法的解释,特别是花括号。

感谢。

1 个答案:

答案 0 :(得分:0)

该语句使用单参数构造函数创建unique_ptr的实例。在这种情况下,它等同于旧样式std::unique_ptr<Entity> uPtr(e)。这反映了自C ++ 11以来可用的新的统一支撑初始化语法。

更多详情:https://google.github.io/styleguide/cppguide.html#Braced_Initializer_List