相关疑难解决方法(0)

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

我正在浏览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];
}
Run Code Online (Sandbox Code Playgroud)

输出:

x: 2.8
y: 4.2
z: 9.5
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?为什么这种语法有效?Point类不包含重载operator [],此处此代码试图自动转换为浮动某处.

我以前从未见过这种用法 - 至少可以说这看起来很奇怪而且令人惊讶.

谢谢

c++ operator-overloading

15
推荐指数
2
解决办法
580
查看次数

标签 统计

c++ ×1

operator-overloading ×1