看Code
1: class B
2: {
3: };
4:
5: class A
6: {
7: public:
8: A()
9: {
10: m_pB = new CB;
11: }
12: ~A()
13: {
14: delete m_pB;
15: m_pB = NULL;//強烈建議保留該行code
16: }
17: private:
18: CB * m_pB;
19: };
相信很多人都認爲Line 15是完全沒有必要的,因爲對象已經銷燬且沒人再用這個對象了;保留該行有如下好處:
1. 我們不能保證沒有其他人調用該類CA,也就是說,有可能CA的實例被其他部分使用。
2. 一旦出現CA實例銷燬後被其他模塊使用的情況,我們在debug的時候很容易通過設置的“m_pB=NULL”來發現是否CA已經被銷燬;否則,CA被銷燬後,m_pB保留的是一個根本無法訪問的野指針,表面看仍舊是個有效的地址,但其實它已經被銷燬了。