【发布时间】:2010-11-18 22:28:24
【问题描述】:
是否有任何好的理由(也许“宏是邪恶的”除外)不使用以下宏?
#define DELETE( ptr ) \
if (ptr != NULL) \
{ \
delete ptr; \
ptr = NULL; \
}
#define DELETE_TABLE( ptr ) \
if (ptr != NULL) \
{ \
delete[] ptr; \
ptr = NULL; \
}
【问题讨论】:
-
宏并不是邪恶的,因为它们是邪恶的。它们不是命名空间的一部分,这使它们变得邪恶。
-
标准规定删除空指针是安全的,所以检查没有用。
-
我已经有一段时间没有使用 c++ 编程了,但我认为最好不要使用 Stroustrup 书中所述的 NULL。
-
在即将推出的 c++1x 标准中,他们最终将提供一个不能转换为数字的 null_ptr 构造
-
@Gavin Chin:相关:stackoverflow.com/questions/704466/…
标签: c++ pointers memory-management macros