这个简单的代码块以一种意想不到的方式运行.
#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'有关.
我发现这个问题讨论了类似的问题.
但正如在最高层回答中提到的那样,匿名变量只有在没有被表达式末尾引用它的指针限制时才会被杀死.我认为这不是这里的情况,因为我将指针("数据")绑定到它,但不知怎的,它仍然被杀死.
我想知道导致意外输出的是什么.