溫馨提示×

c++ unique_ptr的用法是什么

c++
小億
107
2024-02-29 16:20:17
欄目: 編程語言

unique_ptr是一個智能指針類,用于管理動態(tài)分配的對象的所有權(quán)。與傳統(tǒng)的裸指針不同,unique_ptr負責(zé)自動釋放其所管理的對象,從而避免內(nèi)存泄漏。

unique_ptr的用法如下:

  1. 創(chuàng)建unique_ptr對象:可以使用std::make_unique函數(shù)創(chuàng)建一個unique_ptr對象,并將其指向一個動態(tài)分配的對象。
std::unique_ptr<int> ptr = std::make_unique<int>(10);
  1. 訪問unique_ptr指向的對象:可以使用箭頭運算符或*運算符來訪問unique_ptr指向的對象。
std::cout << *ptr << std::endl;
  1. 移交所有權(quán):unique_ptr不允許拷貝或賦值操作,但可以使用std::move函數(shù)來將其所有權(quán)移交給另一個unique_ptr對象。
std::unique_ptr<int> ptr2 = std::move(ptr);
  1. 手動釋放對象:unique_ptr會在其生命周期結(jié)束時自動釋放所管理的對象,但也可以手動釋放對象。
ptr2.reset();
  1. 使用lambda表達式自定義刪除器:可以使用lambda表達式來自定義刪除器,以便在釋放對象時執(zhí)行一些特定的操作。
std::unique_ptr<int, std::function<void(int*)>> ptr3(new int(20), [](int* p){ std::cout << "Deleting: " << *p << std::endl; delete p; });

0