构造函数调用两次并且析构函数导致分段错误

时间:2017-04-27 12:46:10

标签: c++

我有正常编译的代码,但是当我运行它时:

a)如果我不包含析构函数,那么构造函数将被调用两次 b)如果我包含它,构造函数将再次被调用两次,但最后我会得到“Segmentation fault(core dumped)”

我是一般编程和c ++的新手,所以我似乎无法找到问题...感谢所有帮助,感谢您的时间。

这是主要的:

int main(){
  aircraft_list<planes> plane_list;
  plane_list.add();
}

这是飞机的构造函数:

planes::planes(){
  //initializing some vars
}

这是add()的代码:

template <class T> aircraft_list<T> aircraft_list<T>::add(){
  chain_node<T> *y=new chain_node<T>;
  planes obj;
  y->data=obj;
  y->link=first;
  first=y;
  return *this;
}

这是aircraft_list的构造函数:

aircraft_list(){
    first=0;
  }

这是析构函数:

template <class T> aircraft_list<T>::~aircraft_list(){
  chain_node<T> *next;
  while(first){
    next=first->link;
    delete first;
    first=next;
  }
}

**编辑:**所以我更改了del()和add()以返回引用:

aircraft_list<T>& del(const T &x);
  aircraft_list<T>& add();

编译时没有问题。但经过一些阅读后,我仍然不明白为什么第一次调用构造函数。

0 个答案:

没有答案