开发者

Can i pass auto_ptr by reference to functions?

开发者 https://www.devze.com 2022-12-23 20:57 出处:网络
is the following funct开发者_Python百科ion OK: void DoSomething(auto_ptr< … >& a)....

is the following funct开发者_Python百科ion OK:

void DoSomething(auto_ptr< … >& a)....


You can do it but I'm not sure why you would want to do it.

If you're using the auto_ptr to indicate ownership of the ptr (as people generally do), then you only need to pass the auto_ptr to a function if you want to transfer ownership of the ptr to the function, in which case you would pass the auto_ptr by value:

void DoSomething(auto_ptr<int> a)

So any code calling DoSomething relinquishes ownership of the ptr:

auto_ptr<int> p (new int (7));
DoSomething (p);
// p is now empty.

Otherwise just pass the ptr by value:

void DoSomething(int* a)
{...}

...

auto_ptr<int> p (new int (7));
DoSomething (p.get ());
// p still holds the ptr.

or pass a ref to the pointed to object:

void DoSomething(int& a)
{...}

...

auto_ptr<int> p (new int (7));
DoSomething (*p);
// p still holds the ptr.

The second is usually preferable as it makes it more explicit that DoSomething is unlikely to attempt to delete the object.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号