性能方面,使用"nullptr"还是仅使用"0"更快?

Performance wise, is it faster to use 'nullptr' or just '0'?

本文关键字:更快 方面 使用 nullptr 性能      更新时间:2023-10-16

例如:

object* pObject = nullptr;

或:

object* pObject = 0;

再次,哪个是更好的表现?

nullptrstd::nullptr_t类型,因此构造函数被超载。这意味着将其编码为null的事实,因此可以通过避免有条件的速度来更快。

Pointers显然没有超载的构造函数,因此您使用0还是nullptr是无关紧要的。相同的机器代码,相同的性能。

无论如何,当您想要零指针时使用nullptr。小心0,因为它称为整数超载而不是指针。

它们完全一样。字面0可用于初始化指针的事实纯粹是语言语法的一部分,并由编译器处理。结果与使用nullptr初始化指针相同:您获得了一个空指针。

nullptr是类型系统的一部分,与生成的机器代码无关。(它存在,因此有一个具有指针类型的字面意义,而这种字体类型不存在。)

我假设您是指std :: string。

我也假设您打算键入string* mystr = 0;。如果不是指针,则不能为空。

他们几乎可以肯定地编译到完全相同的东西,请使用您喜欢的任何东西。


编辑为object*,我的答案是相同的。两者几乎可以肯定会编译到同一件事上,因此请使用您喜欢的任何东西。