考慮下面的類爲類的指針數據成員處理動態內存?
class A
{
ClassF1 *ptrobjF1;
ClassF2 *ptrobjF2;
ClassF3 *ptrobjF3;
A()
{
ptrobjF1 = NULL;
ptrobjF2 = NULL;
ptrobjF3 = NULL;
}
};
在上述A類,我有類ClassF1,ClassF2和ClassF3 3名指針數據成員。內存將在需要時分配給這個類。可能會出現這樣的情況:只有ptrobjF1的內存需要創建(或)可能出現需要創建內存的所有三個成員的座標。
由於所有三個指針都是公共的,所以它將被正在使用該類的最終用戶訪問。
說假設我正在爲類中的數據成員之一(ptrobjF1)創建內存,並將其他兩個數據成員留作NULL。在這種情況怪異如果任何體訪問中的數據成員的類之外的如下文
A obja;
(obja.ptrobjF3)->Some_function(); // Program crahses because dereferncing NULL
是否有任何設計圖案,以避免訪問哪個是左unintialized數據成員?
是的,有一種模式:'如果(obja.ptrobjF3)(obja.ptrobjF3) - > Some_function();'如果你不想阻止訪問未初始化的指針,使它們私有,並提供適當的getter函數。 –
如果函數沒有初始化,應該是什麼默認行爲?應該使用它能夠調用它嗎?否則,用戶應該檢查0。 –
@πάντα-ῥεῖ如果我在很多地方使用該指針成員,那麼每次都難以檢查nullness –