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