gpt4 book ai didi

c++ - 为什么数组的类型推导优先于对数组的引用优先指针?

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

int v[1];
auto p1 = v;
auto &p2 = v;
auto *p3 = v;

p1int * 类型(与 p3 相同)。特别是在这个简单的示例中,我发现 p2 ( int (&)[1] ) 更有用,因为它固有的数组语义,例如我可以在 p2 上应用 sizeof 以提供与 v 上的 sizeof 相同的效果。

有这方面的标准报价吗?

为什么默认引用是个坏主意? (对于这种数组情况,我的意思是,现在几乎没有 C++ 程序员关心它们......)

最佳答案

auto 推导出非引用类型。

auto& 推导出一个引用。

auto const& 推导出一个 const 引用。

auto&& 推导出引用、const 引用或右值引用。

这就像调用 template 函数时类型推导的工作方式一样。

template<typename T>
void foo( T t );

T 永远不会被推导为引用类型——推导时它始终是值类型。

auto 遵循几乎相同的规则:

template<typename T>
void foo( T&& t );

是众所周知的“通用引用”,类似于 auto&& 类型的变量。

关于c++ - 为什么数组的类型推导优先于对数组的引用优先指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982514/

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