unique_ptr

unique_ptrは、C++11で導入されたスマートポインタの一種で、とあるunique_ptrが指すリソースの所有権は1つのポインタしか持つことができない(現在はそのunique_ptrのみが持つ)という特徴がある。

unique_ptr - cpprefjp C++日本語リファレンス

test.hで、

test.cppで、

となるclass_testを定義する。

main.cppでは、

new class_test(10)で生成したポインタをすぐunique_ptrのp1の初期化に渡す。
スマートポインタの特徴として、メモリリソースの解放はスマートポインタがやってくれるので、deleteが無くても気にしなくていい。
あとは、p1はポインタのように扱うことができる。
そして、std::moveでunique_ptrのp2にムーブした時どうなるだろうか。

$ vi main.cpp 
$ g++ -o main main.cpp test.cpp -std=c++11
$ ./main 
class_test::class_test(10)
x_ = 10
x_ = 10
p1 is false!
class_test::~class_test()
$

p1自身がリソースを持っているかを判定できるので、ここでfalseになるということはp1にリソースはなく、p2に移ったということがわかる。
つまり、リソースは唯一である。

Sample/cpp/unique_ptr/unique_ptr/src/unique_ptr at master · bg1bgst333/Sample · GitHub