传引用(不能传值,因为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没有拷贝构造函数 改为传引用,没有问题 传地址会比较麻烦...
auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也同样报废了.只不过整个move你让明显的知道这样操作后会导致之前的unique_ptr对象失效....
从上面的例子可以看出,unique_ptr和auto_ptr真的非常类似.其实你可以这样简单的理解,auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也...
staticMyClass&getInstance(){staticMyClassinstance;returninstance;} 当然,如果你乐意的话,用&取地址...
首先,需要用原始指针的地方,应该优先用引用。不能用引用的地方,才考虑原始指针,例如某些函数的返回值...
从上面的例子可以看出,unique_ptr和auto_ptr真的非常类似.其实你可以这样简单的理解,auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也...
从上面的例子可以看出,unique_ptr和auto_ptr真的非常类似.其实你可以这样简单的理解,auto_ptr是可以说你随便赋值,但赋值完了之后原来的对象就不知不觉的报废.搞得你莫名其妙.而unique就干脆不让你可以随便去复制,赋值.如果实在想传个值就哪里,显式的说明内存转移std:move一下.然后这样传值完了之后,之前的对象也...
R.33: 表达函数会重置widget时,使用unique_ptr<widget>&作参数。 Reason(原因) Using unique_ptr in this way both documents and enforces the function call's reseating semantics. 以这种方式使用unique_ptr可以从文档和实现两个方面强制函数调用的重置语义。
returnp;// 传值返回,会自动使用move语义 } voidtest2(){ unique_ptr<Dog>pD(new Dog("Gunner")); unique_ptr<Dog>pD2(new Dog("Smokey")); pD2 = move(pD); // 1. Smokey is destroyed // 2. pD becomes empty. // 3. pD2 owns Gunner. ...