【发布时间】:2018-02-06 01:26:44
【问题描述】:
我正在编写一个或多或少看起来像这样的类
struct Foo {
std::shared_ptr<Bar> bar_ptr;
Foo(std::shared_ptr<Bar> b)
: bar_ptr(std::move(b)) {}
};
和cppcheck 警告
(性能)函数参数'b'应该通过引用传递。
我的印象是,在这种情况下,b 应该不是任何类型的参考。这将允许Foo 的实例有选择地完全控制资源(原始共享指针)相对
auto bar1 = std::make_shared<Bar>(...);
Foo my_foo(bar1); // bar1 remains untouched
Foo your_foo(std::move(bar1)); // takes complete control of the bar1
// resource; bar1 now invalid
是我没有正确使用某些东西,还是 cppcheck 还没有意识到这一点?
【问题讨论】: