Mögliche Duplizieren:
Classes store data members in sequential memory?Klassenvariablen - Ausrichtung
nur fragen wollte, warum die folgende richtig ist:
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);
}
}
oder mit anderen Worten: Warum ist es immer garantiert, dass x, y und z sind immer Größe von (T) Einheiten auseinander im Speicher. Kann es zwischen zwei dieser Variablen keine Fragmentierungslöcher geben, sodass der Operator einen falschen Wert zurückgeben kann?
Wenn Sie die Indizierung benötigen, warum es nicht machen 'Vorlage Klasse Vector3 {public: std :: array xs; }; '? –
Fanael