August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
如果你没有其他指针用来初始化一个指针,那么使用空指针nullptr:
当0值被赋给一个指针时,它被称为空指针(null pointer)。我们经常通过检测指针是否为nullptr来检查一个指针是否有效(它是否指向什么东西)。例如:
这并不是一个完美的检测,因为p0可能包含一个碰巧不是0的“随机”值(例如我们忘记了初始化),或者一个已经被删除对象的地址(见12.4.6节)。但是,一般来说这已是我们所能做得最好的。我们实际上不必明确提及nullptr,因为if语句会检测它的条件是否为nullptr:
考虑到它更直接地表达了“p0有效”的思想,我们更喜欢这种简短的形式,但是也有不同意见。
如果我们有一个指针有时指向一个对象,而有时什么都不指向,我们就需要使用空指针。这种情况很少见,比很多人想象的更少。思考一下:如果你没有对象需用一个指针指向,那你又为什么定义那个指针呢?你不能等到有一个对象时再做吗?
用名字nullptr表示空指针是C++11的新特性,因此在旧代码中,人们通常使用0(零)或NULL代替nullptr。两种旧的替代方法都会导致混淆和/或错误,因此优先选择更专用的nullptr。 ...