私はコードを持っています:
class Vector3D : public Vector{
protected:
Point3D * start;
Point3D * end;
public:
~Vector3D(){delete start; delete end;}
Vector3D(Point3D * start, Point3D * endOrLength, bool fromLength){
this->start = start;
if(fromLength){
this->end = new Vector3D(*start+*endOrLength); //the operator '+' is defined but I won't put it here,
//because it's not important now
}else
this->end = endOrLength;
}
Point3D * getStart(){return start;}
Point3D * getEnd(){return end;}
};
今、私はコードを持っています:
Vector3D v(new Point3D(1,2,3), new Point3D(2,3,4), 0); //FIRST CREATION
Vector3D v(new Point3D(1,2,3), new Point3D(1,1,1), 1); //SECOND CREATION
1 回目と 2 回目の作成で同じ Vector3D が得られますが、メモリ リークが発生する可能性があると思います。
それは本当ですか?そして、それを解決する方法は?そのようにするのはエレガントではないと思います:
...
if(fromLength){
this->end = new Vector3D(*start+*endOrLength);
delete endOrLength;
}else
...
const Point3D &endOrLenght を入れたほうがいいかもしれません。getStart/getEnd と同じ -ポインタを返す必要があります:
Point3D * getStart(){return start;}
または単に変数:
Point3D getStart()(return *start)
?