在構造函數中將類作爲參數傳遞時,我最終會在大多數情況下傳遞指針。造成這種情況的主要原因是我要傳遞不能被實例化抽象類,並作爲參考不能爲空我真的沒有選擇......將抽象基類作爲成員處理時的所有權問題
下面是一個例子:
// Abstract class A
class A {
virtual void foo() = 0;
};
class B : public A {
void foo();
};
class C {
public:
C(A* a) : _a(a) {};
private:
A* _a;
};
在某些情況下,我想要C
處理A
對象_a
指向(在刪除時刪除它),在其他情況下,我想要C
刪除_a
而不刪除A
對象。
什麼是具有良好編程方法的最佳實踐?
使用參考文獻 - 表達「僅查看 - 不取得所有權」時,它們確實發光。如果你真的需要一個空值,'boost :: optional'可用。 –
2012-07-06 12:19:13
不幸的是,我無法在抽象類上使用引用。增強功能當然很棒,但現在我無法在工作中使用它。是否有任何純粹的C++功能來解決這個問題? – vanna 2012-07-06 12:27:28
你肯定[可以](http://ideone.com/fVwq7)使用引用。 – 2012-07-06 12:55:56