NULL vs nullptr(为什么要替换它?)

我知道在C ++中0x或在基于指针的应用程序中NULL已被替换nullptr。我只是好奇他们为什么要进行这种替换?

在什么情况下使用指针时nullptr过度使用是NULL有益的?


互换的青春
浏览 625回答 3
3回答

aluckdog

nullptr始终是指针类型。 0(又名C的NULL桥接到C ++中)可能导致重载的函数解析不明确,其中包括:f(int);f(foo *);

交互式爱情

您可以找到一个很好的解释,为什么它被替换为:读取空指针的名称:nullptr,引用该论文:此问题分为以下几类:通过为用户提供一种减少模棱两可的代码的方式来改善对库构建的支持,从而使库编写者不必再担心整数和指针类型的重载。通过使更容易明确地表示整数0和nullptr来改进对通用编程的支持。使C ++易于教授和学习。

MMMHUHU

这是Bjarne Stroustrup的措辞,在C ++中,NULL的定义为0,因此仅存在美学差异。我更喜欢避免使用宏,所以我使用0。NULL的另一个问题是,人们有时会错误地认为它不同于0和/或不是整数。在标准前代码中,有时将NULL定义为不合适的值,因此必须避免。这些天来这种情况不太常见。如果必须命名空指针,则将其命名为nullptr;这就是C ++ 11中的名称。然后,“ nullptr”将成为关键字。
打开App,查看更多内容
随时随地看视频慕课网APP