我必须实现一个看起来像这样的函数:
MyList * sum (MyList * l1, MyList * l2) {
MyList * newlist = new MyList();
//Adds two objects and place the result in a third new list
return newlist;
}
该函数采用两个列表并将每个对象的总和放入一个新列表中。该类MyList
具有指向next
变量的节点,并且列表中的对象是用户定义的。
这让我开始思考——我应该如何处理对象和列表本身的内存动态分配?因为我必须为新列表的每个对象创建内存。
有没有办法将对象总和的值放在新列表中而不必依赖动态分配?也许通过做这样的事情:
Object result(node1->content + node2->content);
Node->content = &result; // will this object be erased when the function ends?
而不是这个:
Node->content = new Object(node1->content + node2->content);
我应该如何处理函数内部创建的新列表的生命周期与函数结束后将保存内存的变量相关?返回新列表时我可以这样做吗?
MyList & sum (MyList * l1, MyList * l2) {
//Create variable without allocating memory and return it's reference
}
简而言之,我的主要疑问是如何处理在函数内部创建并由其他对象持有的对象的生命周期。