性能方面,使用"nullptr"还是仅使用"0"更快?
Performance wise, is it faster to use 'nullptr' or just '0'?
例如:
object* pObject = nullptr;
或:
object* pObject = 0;
再次,哪个是更好的表现?
nullptr
是std::nullptr_t
类型,因此构造函数被超载。这意味着将其编码为null的事实,因此可以通过避免有条件的速度来更快。
Pointers显然没有超载的构造函数,因此您使用0
还是nullptr
是无关紧要的。相同的机器代码,相同的性能。
无论如何,当您想要零指针时使用nullptr
。小心0
,因为它称为整数超载而不是指针。
它们完全一样。字面0
可用于初始化指针的事实纯粹是语言语法的一部分,并由编译器处理。结果与使用nullptr
初始化指针相同:您获得了一个空指针。
nullptr
是类型系统的一部分,与生成的机器代码无关。(它存在,因此有一个具有指针类型的字面意义,而这种字体类型不存在。)
我假设您是指std :: string。
我也假设您打算键入string* mystr = 0;
。如果不是指针,则不能为空。
他们几乎可以肯定地编译到完全相同的东西,请使用您喜欢的任何东西。
编辑为object*
,我的答案是相同的。两者几乎可以肯定会编译到同一件事上,因此请使用您喜欢的任何东西。
相关文章:
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 二叉搜索如何比线性搜索更快?
- push_back并插入 C++ STL 中哪个更快?
- 如何使插入排序更快?
- C++,为什么数组比矢量更快,使用更少的内存
- 哪个更快:在 1d 向量中按字符串搜索还是在 2d 向量中按向量搜索?
- 哪种方式更快?究竟发生了什么,我们没有看到什么?
- 使用 int32_t 而不是双精度运行矢量点积是否更快?
- 为什么一种算法在相同的时间复杂度下比另一种算法更快?
- C++模运算符与移位运算符,哪个更快,为什么?
- 遍历向量与数组哪个更快?
- 为什么按值传递QStringView比引用常量更快?
- 更快的C++算术运算
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- 当我不关心顺序并且没有重复项时,更快的擦除删除成语?
- 如果要求比较器是严格的总排序,而不仅仅是严格的弱排序,C++标准算法会更快吗?
- SDL GPU 为什么将两个图像分成两个单独的循环更快?
- 有没有更快的方法可以在 std::vector 中插入元素
- 为什么酷睿i5-6600在非方阵乘法方面比酷睿i9-9960X更快?
- 性能方面,使用"nullptr"还是仅使用"0"更快?