私はどのようにstd::unique_ptr
機能するかを理解しようとし、そのためにこのドキュメントを見つけました。著者は次の例から始めます。
#include <utility> //declarations of unique_ptr
using std::unique_ptr;
// default construction
unique_ptr<int> up; //creates an empty object
// initialize with an argument
unique_ptr<int> uptr (new int(3));
double *pd= new double;
unique_ptr<double> uptr2 (pd);
// overloaded * and ->
*uptr2 = 23.5;
unique_ptr<std::string> ups (new std::string("hello"));
int len=ups->size();
私を混乱させているのは、この行にあることです
unique_ptr<int> uptr (new int(3));
引数として(丸括弧の間)整数を使用します。
unique_ptr<double> uptr2 (pd);
引数としてポインタを使用しました。違いはありますか?
また、私には明らかではないのは、この方法で宣言されたポインターが、「通常の」方法で宣言されたポインターとどのように異なるかということです。
new int(3)
newへのポインタとint
同じようpd
に、newへのポインタを返しますdouble
。