我制作了一个自定义的vector3类。在这个类中,我没有编写通过花括号进行初始化的代码。无论代码如何运行,即使没有对其进行编码。
如此:
Vec3 pos = {1,1,0};
但是我从来没有写过花括号。如何? ?它是如何工作的????????
这是我的vec3类头文件
class Vec3
{
private:
float* data;
public:
//float* data;
// constructors
Vec3();
Vec3(float x, float y, float z);
Vec3(Vec3&);
Vec3(Vec3&&);
~Vec3();
// getters setters
float getX(); float getY(); float getZ();
void setX(float); void setY(float); void setZ(float);
float& operator[](int);
// maths
float magnitude();
Vec3& operator=(Vec3&);
Vec3& operator=(Vec3&&);
Vec3 operator-();
friend Vec3 operator+(Vec3&, Vec3&); friend Vec3 operator+(Vec3&, Vec3&&); friend Vec3 operator+(Vec3&&, Vec3&); friend Vec3 operator+(Vec3&&, Vec3&&);
friend Vec3 operator-(Vec3&, Vec3&); friend Vec3 operator-(Vec3&, Vec3&&); friend Vec3 operator-(Vec3&&, Vec3&); friend Vec3 operator-(Vec3&&, Vec3&&);
friend float operator*(Vec3&, Vec3&); friend float operator*(Vec3&, Vec3&&); friend float operator*(Vec3&&, Vec3&); friend float operator*(Vec3&&, Vec3&&);
friend Vec3 operator%(Vec3&, Vec3&); friend Vec3 operator%(Vec3&, Vec3&&); friend Vec3 operator%(Vec3&&, Vec3&); friend Vec3 operator%(Vec3&&, Vec3&&);
friend Vec3 operator*(float, Vec3&);
friend Vec3 operator*(float, Vec3&&);
// logical
friend bool operator==(Vec3&, Vec3&); friend bool operator==(Vec3&, Vec3&&); friend bool operator==(Vec3&&, Vec3&); friend bool operator==(Vec3&&, Vec3&&);
// output
friend std::ostream & operator << (std::ostream& out, const Vec3& v);
};
Vec3(浮动x,浮动y,浮动z);如果你已经在你的类中定义了它,那么
语句Vec3 pos = {1,1,0};
是copy-list-initialisation。{1,1,0}
不是(总是)一个数组表达式,如果没有上下文,它就没有类型。
查看Vec3
的构造函数,并发现Vec3(float x, float y, float z);
是这些参数的最佳匹配。