Я пытаюсь понять, как работает 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);
мы использовали указатель в качестве аргумента. Разве это имеет значение?
То, что также не ясно для меня, заключается в том, как указатели, объявленные таким образом, будут отличаться от указателей, объявленных "обычным" способом.