float の 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;
2 番目の例は最初の例と同じ効果がありますか、それとも x、y、z フロート以外のメモリを上書きするリスクがありますか?