想象的简单类线段,它的构造函数是夫妇从类点对象:向前声明和析构函数
class Point ;
class LineSegment {
public:
LineSegment(Point* P1, Point* P2);
~LineSegment();
} ;
的问题是,在析构函数,我应该删除分排名第一,否则将自动完成?在换句话说,在cpp文件,以下哪些应该写成:
LineSegment::~LineSegment()
或
LineSegment::~LineSegment(){
delete P1;
delete P2;
}
第一个也会工作。这取决于你想要的。如果'Point'属于其他人(例如'std :: vector'),那么您将会遇到“不明白为什么,它必须工作”的类。类声明不会将'Point's显示为类成员,所以... – Damon
@Damon我们可以假设他们是成员,他只是将它们排除在外。他怎么可能在析构函数中调用它们? –
@LuchianGrigore:关于声明的好处。尽管当然它并不一定意味着这个类实际上拥有指向的Point对象(因此可以删除它们)。有了“点”和“线”,一个非常有效和高效的方法(考虑转换它们,而不仅仅是分配)是将点存储在数组或向量中,并从线对象(不拥有它们)引用它们。 – Damon