我正在尝试使用适用于Windows的C ++ / CX应用中的int
函数将wstring*
转换为std::to_wstring
。
wstring* turn = &(to_wstring(50)); //the value of *turn is ""
wstring tu = to_wstring(50);
wstring* turn = &tu; //the value of *turn is "50"
有人可以解释原因吗?两个代码片段不应该显示完全相同的行为吗?
答案 0 :(得分:2)
to_wstring(50)
是暂时的。临时表在完整表达结束时被破坏(即,就在分号之后)。因此,在第一个代码段运行后,turn
指向一些不再包含有效std::wstring
的内存,因为它已被销毁。
在第二个代码段中,临时to_wstring(50)
被复制到变量tu
中。暂时被销毁,但tu
不是,因为它仍在范围内。