如何在C++;(无法将新对象创建为局部变量)? 我正在学习C++,我想实现一个简单的链表。这是我的密码 #include <vector> #include <iostream> struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; int main() { ListNode start = ListNode(-1); ListNode *startptr = &start; for(int i=0;i<3;i++) { ListNode foo=ListNode(i); startptr->next = &foo; startptr = startptr->next; } }
如何在C++;(无法将新对象创建为局部变量)? 我正在学习C++,我想实现一个简单的链表。这是我的密码 #include <vector> #include <iostream> struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; int main() { ListNode start = ListNode(-1); ListNode *startptr = &start; for(int i=0;i<3;i++) { ListNode foo=ListNode(i); startptr->next = &foo; startptr = startptr->next; } },c++,pointers,constructor,linked-list,C++,Pointers,Constructor,Linked List,foo的地址始终与startptr无法指向新节点的地址相同。 我切换到调试模式,并获得以下图片: 似乎只有一个foo,每次我“创建”一个名为foo的新ListNode,最后一个ListNode将被覆盖 我曾经使用Python,但从未遇到过这样的问题。这让我很困惑。与ListNode foo=ListNode(i);startptr->next=&foo,您指的是具有自动存储持续时间和块范围的对象。因此,对象foo将在每个循环周期结束时被销毁,稍后引用它会产生未定义的行为 链表的节点通常使用动态
foo
的地址始终与startptr
无法指向新节点的地址相同。
我切换到调试模式,并获得以下图片:
似乎只有一个foo
,每次我“创建”一个名为foo
的新ListNode
,最后一个ListNode
将被覆盖
我曾经使用Python,但从未遇到过这样的问题。这让我很困惑。与
ListNode foo=ListNode(i);startptr->next=&foo代码>,您指的是具有自动存储持续时间和块范围的对象。因此,对象foo
将在每个循环周期结束时被销毁,稍后引用它会产生未定义的行为
链表的节点通常使用动态存储持续时间创建,即使用new
。请参阅以下说明此情况的自适应代码:
int main()
{
ListNode *start = new ListNode(-1);
ListNode *ptr = start;
for(int i=0;i<3;i++)
{
ListNode *foo = new ListNode(i);
ptr->next = foo;
ptr = ptr->next;
}
}
intmain()
{
ListNode*start=新ListNode(-1);
ListNode*ptr=开始;
对于(int i=0;INXT=foo;
ptr=ptr->next;
}
}
使用ListNode foo=ListNode(i);startptr->next=&foo;
,您指的是一个具有自动存储持续时间和块范围的对象。因此,对象foo
将在每个循环周期结束时销毁,稍后引用它会产生未定义的行为
链表的节点通常是使用动态存储持续时间创建的,即使用new
。请参阅以下说明这一点的改编代码:
int main()
{
ListNode *start = new ListNode(-1);
ListNode *ptr = start;
for(int i=0;i<3;i++)
{
ListNode *foo = new ListNode(i);
ptr->next = foo;
ptr = ptr->next;
}
}
intmain()
{
ListNode*start=新ListNode(-1);
ListNode*ptr=开始;
对于(int i=0;INXT=foo;
ptr=ptr->next;
}
}
我建议你从Python编程学习。这是一个福音,但不要把Python对象模型应用到C++对象上。Story Teller在这里,需要一本好的书/教程来学习习语C++。使用动态内存分配,从Python中推荐学习。编程经验在Python中是一个福音,但不要。Story Teller在这里,你需要一本好的书/教程来学习习惯性的C++ C++。使用动态内存分配,你能修改例子或者添加一个关于在指针上更喜欢智能指针的注释吗?你能修改这个例子还是添加一个关于SMAR的注释?t指针超过原始指针?