У меня есть класс для представления трехмерного вектора с плавающей точкой:
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поплавки