二手交易网站开发的,深圳外贸公司排名榜,模板和网站是一体的吗,太原市建设工程质量监督站网站区别1#xff1a;分配除的指针#xff0c;前者是不能赋值#xff0c;只能move,后者可以赋值
区别2#xff1a;前者使用智能指针数组#xff0c;后者不行#xff08;因为后者分配出来的指针具有单一性#xff09;
#include #include
class A { public: A() { std::c…区别1分配除的指针前者是不能赋值只能move,后者可以赋值
区别2前者使用智能指针数组后者不行因为后者分配出来的指针具有单一性
#include #include
class A { public: A() { std::cout “A” std::endl; }
~A() {std::cout ~A() std::endl;
}};
int main() { //std::unique_ptrchar[]ptr std::make_uniquechar[](std::move(100)); //等价写法 //std::unique_ptrA[]ptr1(new A[10],std::default_deleteA[]()); //std::unique_ptrA[]ptr1(new A[10]);(权威规定的默认std::default_delete删除器 ) //可能是为了单一性 //std::shared_ptrptr std::make_shared(100); //注意智能指针数组一定要释放函数 //使用智能数组时一定要添加接口 //不写的直接程序崩溃 //std::shared_ptrA[]ptr(new A[10]);
//使用列子
//这样也可以我也不知道
//std::shared_ptrAptr(new A[10], std::default_deleteA[]());
//std::shared_ptrA[]ptr(new A[10],std::default_deleteA[]());
//std::shared_ptrA[]ptr(new A[10], [](const A* p) {delete[]p;});
//程序直接报错
//std::shared_ptrA[]ptr(new A[10], [](const A* p) {delete p;});
//删除整个
std::shared_ptrA[]ptr(new A[10], [](const A* p) {delete[]p; p nullptr;});}