- 论坛徽章:
- 0
|
空指针究竟指向了内存的哪个地方?
我不太能够指出C语言里面NULL不等于0的情况,因为我对C其实不很了解。
但是在C++里面,这肯定会是一个问题。这里的问题在于名字碰撞。C++倾向于尽量少用宏,而多用常量,这是因为常量的名字不会撞倒。
譬如说我写一个SQL模块,里面我想定义一些标志位:
namespace SQL
{
enum Flags
{
NULL = 0,
LOCK,
...
};
// other definitions omitted
}
那如果像现在这样,就会撞上,最终导致编译错误,所以我只能定义成:SQL_NULL。或许C语言里面这样做有理由,但是在C++里面,SQL::SQL_NULL就和CStudent::mStudentName一样,通常是不好的习惯。
当然,NULL不可能成为一个常量,否则编译错误会更多。
我想C++里面的新的关键字null之所以用小写,或许也考虑了一般人定义常量都是全大写(独家猜测 )。
我同意win_hate关于道德败坏的定义,但是标准只规定了某个政府部门不能道德败坏,并没有规定其它政府部门不能道德败坏......
_________________
愿耶稣基督、穆罕默德、释迦牟尼与你同在! |
|