thể trùng lặp:
Classes store data members in sequential memory?biến lớp - liên kết
Chỉ muốn hỏi tại sao sau đây là đúng:
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);
}
}
hay nói cách khác: Tại sao nó luôn đảm bảo rằng x, y và z luôn là các đơn vị sizeof (T) tách biệt trong bộ nhớ. Có thể không bao giờ có lỗ phân mảnh ở giữa hai trong số những biến thể đó, do đó cho phép toán tử này trả về một giá trị sai?
Nếu bạn cần lập chỉ mục, tại sao không làm cho nó 'mẫu lớp Vector3 {public: std :: mảng xs; }; '? –
Fanael