使用 C++11 unique_ptr
,对象的生命周期似乎延伸到其通常范围之外,如以下(相当人为的)示例:
#include <iostream>
#include <memory>
using namespace std;
int main()
{
unique_ptr<char> uPtr(nullptr);
{
char c = 'X';
cout << "c = " << c << endl;
uPtr.reset(&c);
c = 'Y';
}
cout << "c = " << *uPtr << endl;
return 0;
}
输出:
c = X
c = Y
通常在作用域结束时释放的字符 c 会一直存在到程序结束。第二个输出是'Y',表明unique_ptr
不简单地复制它的值。
是否建议以某种方式延长变量的寿命?
这是安全的,还是与参考具有相同的危险?