Unique_Ptrs 语法 {}

Unique_Ptrs Syntax {}

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

目前,将 class "Entity" 的实体添加到 "entities" 向量的函数如下:

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 }; 

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

谢谢。

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

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