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

时间:2012-11-03 04:17:13

标签: c++ performance visual-c++ c++11

例如:

object* pObject = nullptr;

OR:

object* pObject = 0;

同样,哪一个更好的表现呢?

3 个答案:

答案 0 :(得分:4)

nullptr的类型为std::nullptr_t,因此构造函数会被重载。这意味着它是null的事实是在类型中编码的,所以理论上它可以通过避免条件来更快。

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

无论如何,当你想要一个空指针时,请使用nullptr。注意0,因为它会调用整数重载而不是指针。

答案 1 :(得分:2)

他们完全一样。文本0可用于初始化指针的事实纯粹是语言语法的一部分并由编译器处理;结果与使用nullptr初始化指针相同:得到一个空指针。

nullptr是类型系统的一部分,与生成的机器代码无关。 (它的存在使得有一个带有指针类型的文字,它不会用来存在。)

答案 2 :(得分:0)

我假设你指的是std :: string。

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

他们几乎肯定会编译成完全相同的东西,使用你喜欢的任何东西。


编辑为object*,我的回答是一样的。这两个几乎肯定会编译成同样的东西,所以使用你喜欢的任何东西。