我将一个值作为引用传递给复制构造函数,但正在调用一个无限循环。
这是我的课:
class Vector2f{
private:
GLfloat x;
GLfloat y;
public:
Vector2f();
Vector2f(const GLfloat _x, const GLfloat _y);
Vector2f(const Vector2f &_vector);
~Vector2f();
};
下面是方法的实现:
Vector2f::Vector2f():
x( 0.0f ),
y( 0.0f )
{
DebugLog("Vector2f constructor");
}
Vector2f::Vector2f(const GLfloat _x, const GLfloat _y):
x( _x ),
y( _y )
{
DebugLog("Vector2f constructor(%f, %f)", _x, _y);
}
Vector2f::Vector2f(const Vector2f &_vector):
x( _vector.getX() ),
y( _vector.getY() )
{
DebugLog("Vector2f copy constructor");
}
Vector2f::~Vector2f()
{
}
这是我访问课程的方式:
Vector2f tempVector1 = Vector2f(0.0f, 0.0f);
DebugLog("tempVector1 initialized");
Vector2f tempVector2;
tempVector2 = Vector2f(0.0f, 0.0f);
DebugLog("tempVector2 initialized");
我得到的结果是:
Vector2f constructor(0.000000, 0.000000)
tempVector1 initialized
Vector2f constructor
Vector2f constructor(0.000000, 0.000000)
Vector2f copy constructor
Vector2f copy constructor
Vector2f copy constructor
...
尝试初始化先前创建的对象时会发生无限循环。如果我尝试将 tempVector1 复制到 tempVector 2 中,也会发生无限循环:
Vector2f tempVector2;
tempVector2 = Vector2f(tempVector1);
为什么会发生,如何防止它进入无限循环?
先感谢您。