0

関数に unique_ptr の参照を渡すのは悪い使い方ですか?

void Foo(std::unique_ptr<T>& rT)
{
   ...
}
4

1 に答える 1

5

void Foo(std::unique_ptr<T>& rT)2つのことを意味します:

Foo(std::unique_ptr<T>(new T));これは非定数左辺値参照であるため、次のような関数を呼び出すことはできません。これにより、左辺値のみを受け入れるように関数が制限されます。

左辺値を渡すと、それがどうなるかわかりませんFoo(myunique_ptr);。このような呼び出しFooでは、の所有権を主張するかどうかはわかりませんstd::unique_ptr。呼び出し元が内部で何が起こっているかを認識してFooおらず、関数のシグネチャから明確でない場合、これは危険な場合があります。

上記を考慮した上で、使用法が悪いかどうかを判断できます。

于 2013-03-11T04:04:10.827 に答える