class Equipment
{
std::vector<Armor*> vEquip;
Weapon* mainWeapon;
int totalDefense;
int totalAttack;
public:
unsigned int GetWeight();
int * GetDefense();
bool EquipArmor(Armor* armor);
bool UnequipArmor(Armor* armor);
bool EquipWeapon(Weapon* wep);
bool UnequipWeapon(Weapon* wep);
Equipment();
virtual ~Equipment();
};
看來應該沒有析構函數。指針向量在超出範圍時會自行處理,並且指針指向的實際對象不需要被刪除,因爲會有其他引用。這個類的析構函數是什麼樣的?
都在這個對象指的是主容器:
class Container
{
int weightLimit;
unsigned int currWeight;
std::vector<Item*> vItems;
public:
bool AddItem(Item* item);
bool RemoveItem(Item* item);
Container();
Container(int weightLim);
Container(int weightLim, std::vector<Item*> items);
~Container();
};
現在,這裏我可以看到它是需要刪除容器中的所有對象,因爲這是所有的對象都通過的AddItem分配(新項目(「嗒嗒」))
(盔甲和武器從項目繼承)
1.「There will be其他引用它「。那麼其他引用的所有者怎麼知道何時可以安全地刪除這些對象呢? – pmr 2010-04-26 19:10:56
'mainWeapon'是一個C++指針(與一個更智能的指針相比),析構函數應該考慮到重新分配。 :: shared_ptr'或'scoped_ptr',如果你想讓指針處理分配和解除分配,一個智能指針向量是沒有問題的,但是析構函數應該釋放向量中所有指針所使用的內存,然後銷燬該向量。 – 2010-04-26 19:15:18