gpt4 book ai didi

c++ - 为什么 "reference to array"在 C++ 中以如此困惑的方式定义?

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

以下代码基于片段 from here .我想要一个模板化函数,它接受对实例化函数时推导出的大小数组的引用:

template<int size>
void myFunction( SomeType(&param)[size] )
{
//use param and size here
}

//called like this:
SomeType array[SomeConstant];
myFunction( array ); //SomeConstant magically gets into the function as "size"

现在我对 SomeType(&param)[size] 感到困惑。我希望以下内容起作用:

template<int size>
void myFunction( (SomeType[size])& param ) {}

但它不会编译。

为什么“引用固定大小的数组”需要这种奇怪的语法?

最佳答案

它基于 C 声明语法。当然,C 没有引用,但它是为了模仿指针的 C 语法。这是一个指向数组的指针(在 C 或 C++ 中):

int (*parray)[size];

这个想法是声明模仿用法。它的意思是建议稍后当您使用 parray 时,表达式

(*parray)[0]

(或任何索引)是 int 类型。当然,引用类型不对称,因为在声明它们时使用了 & 而不是引用它们。

关于c++ - 为什么 "reference to array"在 C++ 中以如此困惑的方式定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456253/

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