传引用(不能传值,因为unique_ptr没有拷贝构造函数) // 传引用 void fun1(unique_ptr<AA>& pu) { cout << pu->m_name << endl; } unique_ptr<AA> pu_1(new AA("亚瑟")); fun1(pu_1); 一些需要注意的地方允许临时右值赋值给unique_ptr unique...
进程已退出,代码是负数,表示程序是异常退出(原因:多个unique_ptr对同一块内存释放了多次,相当于操作野指针,程序崩溃) 注意:unique_ptr是类,在C++中,把对象传给函数可以传引用,注意不能传值,因为unique_ptr没有拷贝构造函数 改为传引用,没有问题 传地址会比较麻烦...
——《刚哥伴读会》 01:56 《现代C++编程入门》第48集:定义一个函数,通过引用传值将一个数翻倍。——《刚哥伴读会》 01:33 《现代C++编程入门》第49集:函数参数列表中后置的提供缺省值的可选参数。——《刚哥伴读会》 01:24 《现代C++编程入门》第50集:重载函数的一名多用。——《刚哥伴读会》 01:13...
auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也同样报废了.只不过整个move你让明显的知道这样操作后会导致之前的unique_ptr对象失效....
staticMyClass&getInstance(){staticMyClassinstance;returninstance;} 当然,如果你乐意的话,用&取地址...
从上面的例子可以看出,unique_ptr和auto_ptr真的非常类似.其实你可以这样简单的理解,auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也...
首先,需要用原始指针的地方,应该优先用引用。不能用引用的地方,才考虑原始指针,例如某些函数的返回值...
从上面的例子可以看出,unique_ptr和auto_ptr真的非常类似.其实你可以这样简单的理解,auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也...
还记得在《传值和传指针有什么区别?》讲的吗?既然unique_ptr独享对象,那么就无法直接作为参数,应该怎么办呢? 作为参数 如果函数以unique_ptr作为参数呢?如果像下面这样直接把unique_ptr作为参数肯定就报错了,因为它不允许被复制: 代码语言:javascript 复制 ...
从上面的例子可以看出,unique_ptr和auto_ptr真的非常类似.其实你可以这样简单的理解,auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也...