gpt4 book ai didi

c++ - 如果使用 *pt = &stu1,字符串成员变为空

转载 作者:行者123 更新时间:2023-11-30 00:36:02 25 4
gpt4 key购买 nike

对不起标题。下面的代码可能有助于描述问题。我已经设置了一个Student 类。如果这样做:

Student stu1(score, "sam",5, "aaa", "123dfkj@gmail.COM","156412", "518105" );
Student *tempSt = &stu1;

我尝试cout tempSt 的字符串成员,它有效。但是字符串成员在以下情况下变为空:

tempSt = &Student(score, "sam",6, "aaa", "123dfkj@QQ.COM","156412", "518105" );

发生了什么事?希望你能理解我糟糕的描述:)

更新:

问题源于此:

void myList::add(Student *a) {
slistNode *tempNode = new slistNode();
tempNode->data = a;

if(lastNode == NULL) {
headNode = tempNode;
lastNode = tempNode;
} else {
lastNode->next = tempNode;
lastNode = tempNode;
}

++listLength;

我尝试将这些 obj 放入列表中,所以我希望这些 obj 是临时的(实际上我希望它们没有名称)。我不想制作很多 objs,例如 stu1、stu2、stu3....

slistNode类:

class slistNode {
public:
slistNode() {
next = NULL;
}
Student *data;
slistNode *next;
};

最佳答案

你得到一个指向临时对象的指针。这个指针指向的对象将在代码到达下一行之前被破坏。当对象被销毁时,访问字符串成员当然会调用未定义的行为。

关于c++ - 如果使用 *pt = &stu1,字符串成员变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17314483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com