【发布时间】:2013-01-28 19:53:34
【问题描述】:
我见过很多这样的代码:
SomeType* ptr = NULL;
ptr = SomeMethod(some, params);
有什么意义?我还看到ptr 在其他地方声明(例如在类定义中),然后在类构造函数中会有这样的:
ptr = NULL;
ptr = SomeMethod(some, params);
我不明白为什么要这样做。 ptr = NULL 行肯定没用吗?
【问题讨论】:
-
没错,没用。最好说
SomeType * ptr = SomeMethod(some, params);。 -
有些程序员有点偏执,似乎相信如果他们不点每一个 i 并交叉每一个 t 一些竞态条件会神奇地出现并炸毁一切。我认为这只是过于狂热的防御性编程。
-
在 C89 中,您有时必须将声明与赋值分开,我理解为什么有人不想让事情未初始化。
-
如果这两行之间没有其他代码,那么根本没有意义。至少在 C++ 中。
-
@Chris 在这种特殊情况下,您是对的。这两行应该合并。一般来说,这种行为与妄想症无关。这是防御性编程的一种表现形式。我见过太多人修改代码并突然使用未初始化的变量。非常丑陋的影响由此产生。 (尤其是开启优化)