C++ 里,NULL 的定义就是 0,所以到底使用哪个只是个审美问题。我个人倾向于避免使用宏,所以我使用 0。还有个问题是,有些人误以为 NULL 和 0 并不相同,并且/或者以为 NULL 不是整数。在标准前的代码里,NULL 有时被定义成不恰当的东西,因此不得不避免使用它。不过现今这已不常见。如果你必须给空指针起个名字,那就叫它 nullptr;C++0x 中将会这么叫。届时,“nullptr”将会是个关键字。
相关文章:
- 为什么C++ 有指针也有引用
- C++ 的指针继承于 C,若要移除指针,势必造成严重的兼容性问题。引用有几方面的用处,但我在 C++ 中引入它的主要目的是为了支持运算符重载。例如:...
- 为何 C++ 里有些东西是未定义的
- 因为机器的不同以及 C 里面也有很多未定义的东西。ISO C++ 标准里有以下术语的详细定义:“未定义”、“未指明(unspecified)”、“由实现定义”,以及“合乎语法的(well-formed)”。注意,这些术语的含义和 ISO C 标准里的定义不太相同,而且也和它们常见的用法不同。假若没有察觉到不同的人对这些术语的认识会有所偏差,讨论问题的时候常常会极度混乱。...
- 应该使用按值传递还是按引用传递
- 这取决于你到底想达到什么目的: 如果你想改变被传递的对象,那就按引用传递或者使用指针;例如 void f(X&); 或者 void f(X*); 如果你并不想改变被传递的对象,但该对象很大,那就按常量引用传递;例如 void f(const X&);...
- 避免对指针和数字类型重载
- 答案是,0是一个int——准确地说,一个字面上的整数常量——所以,“总是”f(int)被调用。这就是问题所在:因为不是所有的人总是希望它这样执行。这是c++世界中特有的一种情况:当人们认为某个调用应该具有多义性时,编译器却不这么干。...
- 避免:其返回值是指向成员的非const指针或引用,但成员的访问级比这个函数要低
- 使一个成员为private或protected的原因是想限制对它的访问,对吗?劳累的编译器要费九牛二虎之力来确保你设置的访问限制不被破坏,对不对?所以,写个函数来让用户随意地访问受限的成员没多大意义,对不对?如果你确实认为有意义,那么请反复阅读本段,直到你不这样认为为止。...
- 函数指针
- 函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。 函数指针的声明方法为: 返回值类型 ( * 指针变量名) ([形参列表]);...
- 引用 安全的指针
- 引用就是为变量引入一个别名,都是指像同一个变量. 可以将int&当一个整体看,会比较好理解。...
- 为什么 C++ 没有通用类对象(universal class Object)
- 我们不需要这个:大多数情况下,泛型编程提供的静态类型安全机制是非常不错的替代品。其它情况可使用多继承(multiple inheritance)来解决。 不存在有用的通用类:纯粹的通用类本身不含任何语义。 “通用”类会怂恿人们对类型和接口的考虑粗枝大叶,从而导致多余的运行时检查。...
- C++ 中调用 C 函数
- 将 C 函数声明为``extern "C"''(在你的 C++ 代码里做这个声明),然后调用它(在你的 C 或者 C++ 代码里调用)。例如:...
- 提高对C++的认识
- C++中有很多 "东西":C,重载,面向对象,模板,例外,名字空间。这么多东西,有时让人感到不知所措。怎么弄懂所有这些东西呢? C++之所以发展到现在这个样子,在于它有自己的设计目标。理解了这些设计目标,就不难弄懂所有这些东西了。C++最首要的目标在于:...