std::make_unique和 std::make_shared区别
區(qū)別1:分配除的指針,前者是不能賦值,只能move,后者可以賦值
區(qū)別2:前者使用智能指針數(shù)組,后者不行(因?yàn)楹笳叻峙涑鰜?lái)的指針具有單一性)
#include
#include
class A
{
public:
A() {
std::cout << “A” << std::endl;
}
};
int main()
{
//std::unique_ptr<char[]>ptr = std::make_unique<char[]>(std::move(100));
//等價(jià)寫(xiě)法
//std::unique_ptr<A[]>ptr1(new A[10],std::default_delete<A[]>());
//std::unique_ptr<A[]>ptr1(new A[10]);(權(quán)威規(guī)定的默認(rèn)std::default_delete刪除器 )
//可能是為了單一性
//std::shared_ptrptr = std::make_shared(100);
//注意智能指針數(shù)組,一定要釋放函數(shù)
//使用智能數(shù)組時(shí),一定要添加接口
//不寫(xiě)的,直接程序崩潰
//std::shared_ptr<A[]>ptr(new A[10]);
}
總結(jié)
以上是生活随笔為你收集整理的std::make_unique和 std::make_shared区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows10 64位 安装 Pos
- 下一篇: maven识别包下的xml