Powiel możliwe:
Classes store data members in sequential memory?klasy zmienne - dostosowanie
Chciałem tylko zapytać, dlaczego następujących jest poprawna:
template<class T>
class Vec3 {
public:
// values
T x,y,z;
// returns i-th komponent (i=0,1,2) (RHS array operator)
const T operator[] (unsigned int i) const {
return *(&x+i);
}
}
lub innymi słowy: Dlaczego jest to zawsze gwarantowane, że x, y i z zawsze są wielkościami (T) w pamięci. Czy nie mogą być kiedykolwiek otwory fragmentacji pomiędzy dwoma z tych varibles, pozwalając tym operatorowi zwracać fałszywą wartość?
Jeśli potrzebujesz indeksowanie, dlaczego nie zrobić to 'szablon klasa Vector3 {public: std :: array xs; }; '? –
Fanael