gpt4 book ai didi

c++ - [over.sub]/1 中例子中使用的下标运算符是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:20 25 4
gpt4 key购买 nike

[over.sub]/1

例子:

struct X {
Z operator[](std::initializer_list<int>);
};
X x;
x[{1,2,3}] = 7; // OK: meaning x.operator[]({1,2,3})
int a[10];
a[{1,2,3}] = 7; // error: built-in subscript operator

operator[] 声明中的Z 是什么?
表达式 x[{1,2,3}] = 7; 的可能含义是什么?

最佳答案

What is Z in the operator[] declaration?

它是函数的返回类型。它根本没有在示例中使用,因此没有理由将它实际定义为我只是在那里表明函数返回某些东西的东西。也许他们应该这样做,但实际上并不需要。

What is the probable meaning of the expression x[{1,2,3}] = 7; ?

我相信这表明您实际上可以传递多个值,但仍然将其算作一个参数,因为运算符被定义为具有

[...]exactly one parameter[...]

由于整个 initializer_list 是实际参数,它允许您传递许多值。这可能是为 N 维矩阵编写运算符索引的一种方法。除了重载 operator(),您还可以使用 initializer_list 重载 operator[],其中每个值都是相应维度的索引。

关于c++ - [over.sub]/1 中例子中使用的下标运算符是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909016/

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