I was thinking about the semantics of returning a class type.
Consider a simple vector class.
#ifndef __VECTOR_H__
#define __VECTOR_H__
#include <cmath>
class Vector2f {
public:
float X;
float Y;
Vector2f() : X(0), Y(0) {}
Vector2f(int x,int y) : X((float)x), Y((float)y) {}
Vector2f(float x, float y) : X(x), Y(y) {}
~Vector2f() {}
float Length() { return pow( float(X*X + Y*Y) , 0.5 ); }
void Unit() {
//instead of making the current vector the unit vector
//I would like to return a unit vector
float len = Length();
if(len != 1.0) {
X = X / len;
Y = Y / len;
}
return;
}
};
#endif
The function Unit() makes my current vector the unit vector, but I was thinking that I would like to instead return the unit vector as a new unit vector (I may not want to lose the old one for instance).
I started thinking that this becomes a memory management nightmare because anytime Unit() is called, it will allocate memory and later have to be deleted. Just seems like a dumb way to do it.
Vector2f Unit() {
float len = Length();
return new Vector2f(X/len,Y/len);
}
Is there a better way to do this? I considered maybe having the function demand a reference for a Vector2f object.