工作中遇到这样一种情况,即类的构造函数含参,且是个指针,于是检查指针为空的语句就不得不存在,但是接下来的一系列操作都是以该参数为原始数据,当该参数为NULL但依然完成构造,这是我们根本不知道
里面发生了错误,在接下来的直接使用中,很明显会出现意料之外的状况,所以当检查到参数指针为空时
可否直接中断构造。
查了一下网络,有这样几种解决思路:
1 异常
这是最容易想到的,c++的强大的异常机制,但是只可以在外部捕捉异常然后delete掉已构造的对象。
这里有个很有意思的现象,从书面来看异常机制带来了各种错误甚至警告的通用解决方法,甚至封装了
一些细节以方便使用,但是依然有很多人不愿使用,可能满屏幕的try... catch...很容易把人搞晕吧。
2 这里提到一个据说是google的一个编码标准,
即在构造函数中只实现不会产生错误的初始化工作,而其他的则有一个专门的public函数Init来处理,此时在
函数Init内部,对象已经构造成功,delete this,当然会起作用,但是就是想参数检查可能会出现多一次拷贝。
阅读(2840) | 评论(0) | 转发(0) |