gpt4 book ai didi

c++ - 我可以通过引用函数来传递 auto_ptr 吗?

转载 作者:可可西里 更新时间:2023-11-01 18:15:29 24 4
gpt4 key购买 nike

下面的函数OK吗:

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

最佳答案

你可以做到,但我不确定你为什么要这样做。

如果您使用 auto_ptr 来指示 ptr 的所有权(正如人们通常所做的那样),那么如果您想将 ptr 的所有权转移给函数,则只需将 auto_ptr 传递给函数,在这种情况下您将按值传递 auto_ptr:

void DoSomething(auto_ptr<int> a)

因此任何调用 DoSomething 的代码都会放弃 ptr 的所有权:

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

否则只需按值传递 ptr:

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

...

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

或者将 ref 传递给指向的对象:

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

...

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

第二个通常更可取,因为它更明确地表明 DoSomething 不太可能尝试删除该对象。

关于c++ - 我可以通过引用函数来传递 auto_ptr 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2486616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com