我是否需要使用unique_ptr而不是std::function?

问题描述 投票:0回答:1

我有一个工厂返回一个数据处理的函数。

class Factory {
    function<void(Data&)> build();
} 

现在我在纠结返回类型是否应该是 function<void(Data&)>unique_ptr<function<void(Data&)>>. 换句话说,std函数有多重,是可以复制来复制去,还是用智能指针管理比较好?

c++ smart-pointers std-function
1个回答
3
投票

std::function 使用某种形式的 抹杀因此,它本身不应该太大。例如,在我用GCC和libstdc++进行的实验中,所有的 std::function 我试过有32个字节。现场演示. 因此, 动人 std::function 对象应该相对便宜(拷贝 可能是另一回事)。)

总之。std::unique_ptr 还是比较小的(通常是一个原始指针的大小),因此,它在汇编级的移动速度会更快。是否真的有关系,是一个剖析的问题。

© www.soinside.com 2019 - 2024. All rights reserved.