类结构保证是访问顺序

Luk*_* B. 3 c++

考虑一下:

class Vec3
{
    private:
        float n[3];
    public:
        float& x;
        float& y;
        float& z;
        Vec3(float x_, float y_, float z_) : x(n[0]), y(n[1]), z(n[2])
        {
            x = x_;
            y = y_;
            z = z_;
        }
}
Run Code Online (Sandbox Code Playgroud)

我可以肯定这样做:

Vec3 v(1,2,3);
cout<<reinterpret_cast<float*>(&v)[0]<<"\t";
cout<<reinterpret_cast<float*>(&v)[1]<<"\t";
cout<<reinterpret_cast<float*>(&v)[2]<<"\t";
Run Code Online (Sandbox Code Playgroud)

1 2 3遵循标准的每个编译器/操作系统给我?

MSa*_*ers 5

不可以.为了实现这一目标,您需要(至少)标准布局类型.float&不是,因此Vec3也不是.(9/7,第一个子弹).