类指针检查的必要性
- C/C++ code
class A;A* pA = NULL;//new A;pA->A();
很明显pA->A();这句存在隐患。
如果A()对this指针进行操作的话, 那肯定是会挂掉的,于是乎:
- C/C++ code
#define CheckThis if(this == NULL){ assert(!"类指针异常"); return; }#define CheckThisRet(a) if(this == NULL){ assert(!"类指针异常"); return a; }这两个宏应运而生, 但是这样检查究竟有没有必要呢?
[解决办法]
没必要.
逻辑性严密性强的程序出现此类情况的机会少之甚少,
至多在Debug版本下采用该种方法, Release版本个人认为不需要了(前提是Debug要彻底).
[解决办法]
1、这种代码一般情况下肯定会崩溃,根据core文件也能找到错误地方。
除非你构造函数不访问任何非静态的成员变量。
2、在一个空对象指针上直接调用函数,代码风格和逻辑都有问题。
3、如果对象指针是从函数参数中传入,最好检查一下是否为空。
一个懒惰的但不严谨方法是不检查是否为空,等coredump后看core文件也能够准确定位错误,不推荐。