动态创建对象 C++
Posted
技术标签:
【中文标题】动态创建对象 C++【英文标题】:Creating objects dynamically c++ 【发布时间】:2015-02-20 15:05:34 【问题描述】:嗯,我已经阅读了很多关于这个主题的不同帖子,但没有一个可以解决我的问题。
如何动态创建对象,并将它们存储在链表中。
我有这段代码,一个对象保存一个数字,然后它有一个指向下一个数字的指针,仅用于表示。 例如:17
一个->下一个 = 七个。两者都是同一类的对象。
class Class
private:
int value;
Class *pNext; //Points to the next object in the linked list.
public:
Class()value = 0;
~Class();
void setV(int x) value = x;
int getV()return value;
//void setP(Class *p) pNext = p; ?? Is this right?
;
int main()
Class *pFirst; //pointer to first element
Class *pLast; //pointer to last element
Class *pCurrent; //pointer to current element
for(int i = 0; i < 4;i++)
pCurrent = new Class;
pCurrent->setV(i);
//pCurrent->setP(NULL);
for(int i = 0; i < 4;i++)
cout << pCurrent->getV() << " ";
return 0;
谢谢
【问题讨论】:
并销毁 - 不,new
ed 存储在指针中的对象不会自动销毁,这就是为什么不推荐这样做的原因。
据我所知,您的循环永远不会破坏它创建的对象。它也没有正确链接它们,因此它们没有列出。此外,类构造函数无法初始化所有对象成员,特别是未初始化 pNext
指针,因此遍历“列表”几乎肯定会以崩溃告终。
【参考方案1】:
要使列表永久化,您首先必须声明头节点,然后对于 for 循环中的每次迭代,添加到该列表中。
int main()
Class *pFirst; //pointer to first element
pFirst->setV(0);
Class *pLast; //pointer to last element
Class *pCurrent; //pointer to current element
pFirst->pNext = pCurrent; // To keep track of the list via head
for(int i = 0; i < 4;i++)
pCurrent = new Class;
pCurrent->setV(i);
pCurrent->pNext = NULL;
for(int i = 0; i < 4;i++)
cout << pCurrent->getV() << " ";
return 0;
【讨论】:
以上是关于动态创建对象 C++的主要内容,如果未能解决你的问题,请参考以下文章