gpt4 book ai didi

c++ - 如果函数 f() 返回一个指针,这是正确的 : auto* v = f() OR auto v = f()?

转载 作者:IT老高 更新时间:2023-10-28 21:57:25 25 4
gpt4 key购买 nike

我几乎在任何地方都使用 c++11 auto 关键字。不过,我不确定在这种情况下我是否正确使用它。考虑以下简单示例:( http://ideone.com/TxLJlx )

#include <iostream>

const char* f()
{
return "Hello";
}

int main()
{
auto s1 = f();
auto* s2 = f();

std::cout << s1 << std::endl;
std::cout << s2 << std::endl;

return 0;
}

autoauto* 似乎都可以工作,并且似乎做同样的事情。这个假设是错误的吗?

为什么两者都给出相同的结果?

在这种情况下,auto 的正确用法是什么?

最佳答案

它们的含义相同 - 在这两种情况下,类型都是 const char*。然而,使用 auto * 强调(和自文档) f() 返回一个指针的事实。如果稍后将函数更改为返回其他内容(例如,在这种情况下为 std::string),它将发出错误信号。

使用哪个主要是风格问题。如果代码严重依赖返回指针的 f(),或者您觉得有必要让这一点显而易见,请使用 auto*。否则,只需使用 auto 并完成它。

请注意,返回引用时大小写不同。这些是由 auto 推导删除的,因此如果您需要将返回的引用作为引用,则必须使用 auto & (或使用 auto && 以获得通用引用)。

关于c++ - 如果函数 f() 返回一个指针,这是正确的 : auto* v = f() OR auto v = f()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20866605/

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