int main(){
//Node is some template class
Node<int>* head = new Node<int>[5];
for(int ii = 0; ii < 5; ii++)
{
head[ii].set_Data(ii);
head[ii].set_Link(head + (ii + 1));
if(ii == 4)
{
head[ii].set_Link(NULL);
}
}
delete [] head;
}
template<typename T>
void Node<T>::set_Link(Node* Node_Address)
{
Link = Node_Address;
}
template<typename T>
Node<T>::~Node()
{
delete Link;
cout << "Destructor" << endl;
}
私は今、リンクリストを学んでいます。デストラクタが15回呼び出され、coutステートメントが15回出力される理由がわかりません。私がステートメントを取り除く場合
head[ii].set_Link(head + (ii + 1));
デストラクタは5回しか呼び出されません。これは、5つのクラスが作成されるため意味があります。クラスではなくポインタのみを渡すときに、メンバー関数set_Link()を使用すると、デストラクタが呼び出されるのはなぜですか。コピーコンストラクターは呼び出されません。助けてくれてありがとう!