在下面的例子中,當我通過p
給一個函數,它就會盡快函數func退出摧毀如何在智能指針中傳遞函數?
void func(std::auto_ptr<int> p)
{
// deletes p
}
int main()
{
std::auto_ptr<int> p(new int);
func(p);
*p = 1; // run-time error
}
我還告訴記者,通過引用傳遞智能指針是一本書很糟糕的設計「C++標準庫 - Nicolai M. Josuttis的參考」。
報價:
允許一個auto_ptr按引用傳遞是非常糟糕的設計,你 應該總是避免.....
.....根據auto_ptrs的概念,可以通過使用常量引用將所有權轉移到函數中。
是不是可以傳遞智能指針或者我得到了錯誤的想法?
std :: auto_ptr's由於像本書正在討論的那樣的錯誤語義而被棄用... – Lalaland 2012-02-06 05:30:46
瑣碎的編輯要求:「一旦函數退出」(不是「存在」) – axon 2012-02-06 05:37:50
是否有任何解釋如何通過使用常量引用可以將所有權轉移到函數中? – user1086635 2012-02-06 05:44:08