小编oma*_*al8的帖子

试图在C++中保持匿名变量的存活

这个简单的代码块以一种意想不到的方式运行.

#include <iostream>
using namespace std;


class Node
{
 public:
    char* data;
    Node(char d)
    {
       data = &d;
    }
};


int main()
{
   Node NodeA = Node('c');
   cout<<*(NodeA.data)<<endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期待得到'c'作为输出,但它输出'}'.我觉得它必须与将"数据"指针分配给一个匿名变量'c'有关.

我发现这个问题讨论了类似的问题.

但正如在最高层回答中提到的那样,匿名变量只有在没有被表达式末尾引用它的指针限制时才会被杀死.我认为这不是这里的情况,因为我将指针("数据")绑定到它,但不知怎的,它仍然被杀死.

我想知道导致意外输出的是什么.

c++ scope

0
推荐指数
1
解决办法
175
查看次数

标签 统计

c++ ×1

scope ×1