我有一个类来表示浮点的 3D 矢量:
class Vector3D
{
public:
float x, y, z;
float * const data;
Vector3D() : x(0.0), y(0.0), z(0.0), data(&x) {}
}
我的问题是:x、y 和 z 是否会在内存中按顺序分配,以便我可以将 x 的地址分配给数据,然后在数据上使用下标运算符将向量分量作为数组访问?
例如,有时我可能想直接访问向量组件:
Vector3D vec;
vec.x = 42.0;
vec.y = 42.0;
vec.z = 42.0;
有时我可能想通过偏移量访问它们:
Vector3D vec;
for (int i = 3; i--; )
vec.data[i] = 42.0;
第二个示例是否与第一个示例具有相同的效果,或者我是否冒着覆盖除 x、y 和 z 浮点数之外的内存的风险?