例如:
object* pObject = nullptr;
或者:
object* pObject = 0;
同样,哪一个性能更好?
例如:
object* pObject = nullptr;
或者:
object* pObject = 0;
同样,哪一个性能更好?
nullptr
是类型的std::nullptr_t
,因此构造函数被重载。这意味着它为 null 的事实在类型中进行了编码,因此理论上可以通过避免条件来更快。
指针显然没有重载的构造函数,因此无论您使用0
还是nullptr
无关紧要。相同的机器代码,相同的性能。
无论如何,nullptr
当你想要一个空指针时就去吧。小心,0
因为它会调用整数重载而不是指针。
它们完全一样。0
文字可用于初始化指针的事实纯粹是语言语法的一部分并由编译器处理;结果与使用nullptr
初始化指针相同:您得到一个空指针。
nullptr
是类型系统的一部分,与生成的机器码无关。(它的存在是为了有一个指针类型的文字,它过去并不存在。)
我假设您指的是 std::string。
我还假设您打算输入string* mystr = 0;
. 如果不是指针,则不能为空。
他们几乎可以肯定编译成完全相同的东西,使用你喜欢的任何东西。
编辑为object*
,我的答案是一样的。这两者几乎肯定会编译成相同的东西,所以使用你喜欢的任何东西。