C++ 指针具有正确的地址,但没有';不要显示真实的信息

C++ 指针具有正确的地址,但没有';不要显示真实的信息,c++,pointers,C++,Pointers,我有一个指针的问题,当我创建这个对象时,我可以看到它们的正确地址,我可以访问这些信息 World::World() { //Create Areas Area salaEst("East Room", "The East Room"); Area salaWest("West Room", "The West Room"); //Create Links salaEst.setDirection('w',&salaWest); salaW

我有一个指针的问题,当我创建这个对象时,我可以看到它们的正确地址,我可以访问这些信息

World::World() {
    //Create Areas
    Area salaEst("East Room", "The East Room");
    Area salaWest("West Room", "The West Room");

    //Create Links
    salaEst.setDirection('w',&salaWest);
    salaWest.setDirection('e',&salaEst);

    //Player stats
    actual = &salaEst;

    //Prints
    salaEst.getArea();
    actual->getArea();

    cout << "East: " << &salaEst << "\nWest: " << &salaWest << "\nActual: " << actual << endl;
}
但是如果我想在另一个函数中看到这些信息,例如在这个函数中:

void World::actualArea() {
    cout << "Get actual Address Area: " << actual << endl;
    actual->getArea();
}
这部分代码位于
区域
类中:

Area::Area(string name, string description) {
    this->name = name;
    this->description = description;
}

void Area::getArea() {
        cout << name << endl;
        cout << description << endl;
    }
Area::Area(字符串名称、字符串描述){
此->名称=名称;
这个->描述=描述;
}
无效区域::getArea(){

cout这是因为变量在
World::World
末尾被销毁。因此,指针无效:这是一个UB(未定义行为).

salast和salaWest是World Constructor中的临时变量。函数作用域结束后,actual将指向正确的地址,该地址将包含垃圾。
getArea
对于打印某些内容的函数来说是一个坏名称。将其称为
printArea
我可以看到它们正确的地址
一个具有“看起来正确”的地址并不确定该地址上的内容的有效性。
Get actual Address Area: 0x7fff5086c6e8

ɆP??ɆP??ɆP??ɆP??ɆP??ɆP??ɆP??ɆP?
ɆP??ɆP??ɆP??ɆP??ɆP??ɆP?hɆP??ɆP??ɆP?
Area::Area(string name, string description) {
    this->name = name;
    this->description = description;
}

void Area::getArea() {
        cout << name << endl;
        cout << description << endl;
    }