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

Student stu1(score, "sam",5, "aaa", "[email protected]","156412", "518105" );
Student *tempSt = &stu1;

我尝试对cout的字符串成员tempSt起作用。
但是在以下情况下,字符串成员变为空:
tempSt = &Student(score, "sam",6, "aaa", "[email protected]","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;

}

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

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

最佳答案

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

08-17 03:11