Qt的QVector3D :: operator []是否具有未定义的行为?

时间:2019-09-17 19:03:21

标签: c++ qt

这是Qt的QVector3D实现的一部分:

class QVector3D
{
public:
    // lot of additional functions
    float &operator[](int i);
private:
    float xp, yp, zp;
};

inline float &QVector3D::operator[](int i)
{
    Q_ASSERT(uint(i) < 3u);
    return *(&xp + i);
}

我非常确定此operator[]实现具有UB,因为它向指针添加了一个整数,而该指针实际上并不指向数组。

我对吗,这是UB吗?

(我只是想仔细检查一下。Qt被广泛使用,开发了很长时间。奇怪的是,它的UB非常小)

0 个答案:

没有答案