C++11unique_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 は、プログラムの最後まで存続します。2 番目の出力は「Y」で、unique_ptr
がその値を単純にコピーしていないことを示しています。
何らかの方法で変数の寿命を延ばすことをお勧めしますか?
これは安全ですか、それとも参照と同じ危険を伴いますか?