私はクラスを持っています:
class Point3D : public Point{
protected:
float x;
float y;
float z;
public:
Point3D(){x=0; y=0; z=0;}
Point3D(const Point3D & point){x = point.x; y = point.y; z = point.z;}
Point3D(float _x,float _y,float _z){x = _x; y = _y; z = _z;}
inline const Point3D operator+(const Vector3D &);
const Point3D & operator+(const Point3D &point){
float xT = x + point.getX();
float yT = y + point.getY();
float zT = z + point.getZ();
return Point3D(xT, yT, zT);
}
...
そのように使用すると:
Point3D point = Point3D(10,0,10);
すべて正常に動作します。
私が書くとき:
Point3D point = Point3D(10,0,10);
Point3D point2 = Point3D(0,0,0) + point();
また、大丈夫です(point2 = point)。(0,0,0) 以上のものを追加すると、それも機能します。
しかし、私がしたいとき:
Point3D point = Point3D(10,0,10);
someFunction( Point3D(0,0,0) + point ); //will get strange (x,y,z)
関数は、(私の意見では)ランダム(x、y、z)の値を取得します。なんで?
さらに奇妙なことに、その同様の例では、すべてが再び機能します。
Point3D point = Point3D(10,0,10);
Point3D point2 = Point3D(0,0,0) + point;
someFunction( point2 ); // will get (10,0,10)
その奇妙な行動の理由は何ですか?