qdi*_*dii 5 c++ compiler-construction assert this
我想知道是否放置assert( this != nullptr );
每个成员函数都是个好主意.我相信编译器可以决定完全忽略这个断言,因为假设它this
不能为null,因此断言始终为true并且可以在编译时解析.
但是如果编译器没有做出这个假设,那么这个断言对于及早发现问题非常有用.
编译器会假设这个吗?
不,编译器通常不会这样认为.甚至商业代码都会使用这些检查,有些不仅仅是断言,而是其中的逻辑.if (!this) { doSomeWork(); }
.
虽然你无法到达的情况下this
将NULL
不运行到未定义的行为,如果你也知道的实施细则那么这是一个检查,你可以做; 是的,你是对的,它可以帮助调试.
我不会把它放在任何地方.在任何地方,就此而言.如果this
确实如此NULL
,当您访问某个成员时,您可能会在以后遇到崩溃.如果您没有访问任何成员,请考虑标记该方法static
.它也不必要地膨胀代码.
归档时间: |
|
查看次数: |
471 次 |
最近记录: |