從我讀的the std::shared_ptr
doc中,不能使用=
從現有指針初始化shared_ptr
。std :: shared_ptr - 我可以使用等號(=)進行初始化嗎?
如果您希望從現有的指針進行初始化,唯一可用的語法是
std::shared_ptr<int> p3 (new int);
問題
它是正確的,你不能使用=
初始化shared_ptr
如下所示:
std::shared_ptr<Foo> pFoo = new Foo(bar);
其他人(在C++方面比我有更多的經驗)has stated,你可以。
他是錯的, [構造函數](http://en.cppreference.com/w/cpp/ memory/shared_ptr/shared_ptr)被標記爲'explicit' – WhiZTiM
從'Foo *'的隱式轉換是無效的。但這是好的:'std :: shared_ptr pFoo = std :: shared_ptr (new Foo(bar));' –
juanchopanza
@juanchopanza是的,我同意。我更關注[他的聲明](http://stackoverflow.com/a/42142680/4784683),使用'='是***初始化*** vs ***分配*** – Adrian