看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保留的是一个根本无法访问的野指针,表面看仍旧是个有效的地址,但其实它已经被销毁了。