c – shared_ptr构造函数参数是否应按值传递
当我将shared_ptr传递给将该参数复制到成员shared_ptr的构造函数时,是否应该通过值传递此参数?
例: struct MyClass { MyClass(std::shared_ptr<MyDependency> dep) : dep(dep) {} std::shared_ptr<MyDependency> dep; }; 如果用临时(MyClass(s??td :: make_shared< ...>())构造,编译器应该移动参数(一次或两次?). 编译器是否能够“自动”将dep移动到dep, 如果使用左值构造,则将复制该值(最少一次). 另一方面,通过const-ref传递shared_ptr将始终复制指针. 那么构造函数参数是否应该通过值传递,如果它们将直接复制到成员中? 编辑:参数/成员必须是shared_ptr. 解决方法
如果您打算分享所有者,即您想要保留副本:是的,通过值传递是首选方式.
首先,参数是移动构造,然后初始化成员(见下文).在某些情况下,可以省略论证的构建.
是的你应该.参数有一个名字,所以它是一个左值.要移动构造成员,您需要有一个右值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |