當您將一個unique_ptr複製到另一個時,正在閱讀有關智能指針的更多信息,並遇到了構造函數被刪除的概念。這個概念到底是什麼? #include<iostream>
#include<memory>
class Person {
public:
int e;
Person(int e) : e(e) { }
};
int main() {
st
class A{
public:
A():p(nullptr){};
private:
std::unique_ptr<B> p; // B is some class
};
當A的對象超出範圍時,將自動刪除佔用內存空間的內存空間,該內存空間消耗的內存空間爲p。 我們是否應該像下面那樣顯式編寫析構函數? ~A(){
delete p;
只要我不將構造函數的定義(B)移動到標頭B.h,代碼就會工作。 B.h class Imp; //<--- error here
class B{
public:
std::unique_ptr<Imp> imp;
B(); //<--- move definition to here will compile error
~B();
////
我想打一個別名模板std::unique_ptr供應我自己刪除器功能。 unique_ptr既有標量和數組實現,他們是這樣定義的: template <class T, class D = default_delete<T>>
class unique_ptr // scalar
template <class T, class D>
class unique_ptr<T[], D> //
我想要真正從C++ 98移到C++ 11和更新的版本。我已將大部分新東西包裹起來,但我仍不確定unique_ptr的正確用法。 考慮下面的例子,其中類A有一個unique_ptr成員(我以前會使用原始指針!)。這個成員變量應該在用戶需要時通過在其他地方調用一個函數(而不是類的一部分)來分配。這是正確的用法嗎?如果不是,最好的選擇是什麼? class A {
private:
uniqu