gpt4 book ai didi

c++ - 这个 C++ 语法是什么意思,为什么会起作用?

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

我正在查看 OpenDE 的源代码,并且在一个类中发现了数组索引运算符“[]”的一些奇怪的语法用法。这是一个显示语法的简化示例:

#include <iostream>

class Point
{
public:
Point() : x(2.8), y(4.2), z(9.5) {}

operator const float *() const
{
return &x;
}

private:
float x, y, z;
};

int main()
{
Point p;
std::cout << "x: " << p[0] << '\n'
<< "y: " << p[1] << '\n'
<< "z: " << p[2];
}

输出:

x: 2.8
y: 4.2
z: 9.5

这里发生了什么?为什么这种语法有效? Point 类不包含重载的 operator [] 并且这里的代码正在尝试自动转换为 float 某处。

我以前从未见过这种用法——至少可以说它看起来很不寻常而且令人惊讶。

谢谢

最佳答案

p 被隐式转换为 const float* const,它指向 x。所以 *px*(p+1)y,以此类推。当然,这样做是一个非常奇怪的想法(而且令人困惑!)。如果他们真的想这样做,通常最好将 x、y 和 z 存储在一个数组中,并有一个函数来获取整个数组。

关于c++ - 这个 C++ 语法是什么意思,为什么会起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632746/

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