我有正常编译的代码,但是当我运行它时:
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();
编译时没有问题。但经过一些阅读后,我仍然不明白为什么第一次调用构造函数。