你能帮我写一下这个List的拷贝构造函数吗,注意数据是间接存储的。
class List {
private:
struct Node {
Data *data;
Node *next;
};
Node *head;
};
您可以假设您拥有Data类的复制构造函数。
谢谢。
答案 0 :(得分:1)
您的类定义需要添加函数签名:
List(const List& list);
参数是您要复制的列表。
您还需要实现此功能。
List::List(const List& list)
{
//Iterate through the list parameter's nodes, and recreate the list
//exactly as it is in the list you passed in.
}
请注意,您可能 不 想要这样做:
List::List(const List& list)
{
head = list.head;
}
因为它不是列表的副本,而是实际上对相同列表的第二次引用。
您可以像这样调用此函数:
List thisIsAPremadeList;
List copyOfList(thisIsAPremadeList);
现在copyOfList包含thisIsAPremadeList所拥有的所有内容的深层副本。