gpt4 book ai didi

c++ - 使用 auto_ptr 时 *ptr 和 *ptr.get() 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 19:40:19 25 4
gpt4 key购买 nike

为什么我要将 get()* 一起使用,而不是仅仅调用 *

考虑以下代码:

auto_ptr<int> p (new int);
*p = 100;
cout << "p points to " << *p << '\n'; //100

auto_ptr<int> p (new int);
*p.get() = 100;
cout << "p points to " << *p.get() << '\n'; //100

结果完全一样。 get() 更安全吗?

最佳答案

几乎没有区别。

*p 的情况下,重载的 operator*(由 auto_ptr 定义)被调用,返回 reference 到底层对象(在取消引用它之后——这是由成员函数完成的)。然而,在后一种情况下,p.get() 返回您自己取消引用的底层指针。

我希望这能回答您的问题。现在我建议您避免使用std::auto_ptr,因为它的设计很糟糕——它甚至已被弃用,优先于其他智能指针,如 >std::unique_ptrstd::shared_ptr(以及 std::weak_ptr)。

关于c++ - 使用 auto_ptr 时 *ptr 和 *ptr.get() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40155159/

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