gpt4 book ai didi

c++ - 难以理解的函数签名 - 返回对 N 个对象数组的引用

转载 作者:IT老高 更新时间:2023-10-28 12:56:05 26 4
gpt4 key购买 nike

我遇到了以下签名

double(&rotate_vec(double(&val)[4]))[4];

在评论中它“声称”接受并返回一个由四个元素组成的数组。我的第一 react 是,这看起来还不是标准的 c++ this compiles :

double(&rotate_vec(double(&val)[4]))[4]
{
// ...
return val;
}

int main()
{
double ar[4] = { 1, 2, 3, 5 };
rotate_vec(ar);
return 0;
}
  1. 这个 c++ 怎么样?你会怎么读?
  2. 我们can't return an array from a function ,只是指针,或者我们可以吗?

最佳答案

使用 C++03 可以尽最大努力简化原始代码

double(&rotate_vec(double(&val)[4]))[4];

就是使用一个typedef,也就是说:

typedef double Four_vec[4];
Four_vec& rotate_vec( Four_vec& val );

在 C++11 中你可以编写

auto rotate_vec( double (&val)[4] )
-> double (&)[4];

虽然我会使用 typedef 或 C++11 using 来澄清。


关于

“We can't return an array from a function, just pointers, or can we ?”

您不能按值返回原始数组,但可以返回指针或引用,也可以将其包装在结构中,例如 C++11 std::array

关于c++ - 难以理解的函数签名 - 返回对 N 个对象数组的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416000/

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