2
我的基類需要公開一個方法,該方法對於某些派生類將返回一個指向動態分配數組的智能指針,並且對於其他派生類將返回靜態分配的指針/引用一。C++智能指針指向靜態和動態分配的資源
例如:
class Base
{
public:
virtual ??? foo()=0;
}
class A : public Base
{
private:
float arr[10];
public:
??? foo(){ return ???arr; }
}
class B : public Base
{
public:
??? foo(){
allocate array;
return ???array;
}
}
的動態分配的陣列類方法中創建和我寧願使用std::unique_ptr
。但是我應該如何處理類A
中的靜態分配數組?
我應該創建從std::unique_ptr
派生的自己的類,它可以知道指針分配並且不會試圖銷燬靜態分配的指針,或者可能已經存在這樣的指針?
該代碼中沒有任何靜態分配的數組。這可能是一個問題......無論如何,如果你有這樣一個數組,那麼'boost :: shared_ptr' w /自定義刪除將是一個選項。但是,它有一些開銷。如果開銷不可接受,那麼可以基於'boost :: intrusive_ptr'創建自己的腳本,該腳本不具有該開銷問題(動態分配)。 – 2010-10-25 12:10:28
從內存開始,std :: shared_ptr提供了一個構造函數,它可以「擁有」一個對象,但實際上指向另一個對象,就是爲了這個目的。我實際上無法在MSDN上找到任何這方面的證據,而且我也不能編寫任何使用此方法的代碼。 – Puppy 2010-10-25 12:24:04