在 QString 构造函数和其他函数中,QChar 是通过值传递的,而不是通过 const ref: QString(QChar ch) ,但是它本身是一个类 ( class QChar ),而不是 POD 类型。为什么会这样通过?
最佳答案
Qt 5.6.2 中的QChar
类有一个数据成员,一个unsigned short
。因此,在大多数平台上,sizeof(QChar)
将是 2
。这比您通常使用的指针(通常为 4 或 8 个字节)小。
因此,您可以像对待任何其他基本类型一样对待 QChar
。事实上,它被设计为以这种方式工作,因为它取代了 Qt API 中的 char
。
通过 const ref 的原因是效率高,对于大对象来说非常有意义。在这些情况下,按值(value)传递意味着昂贵的拷贝。所以你用它来换取一个额外的间接(因为在引擎盖下引用通常是用指针实现的)并且更好。对于推理不成立的基本类型。复制很便宜,因此按值传递并避免增加间接寻址更有效。
关于c++ - 为什么Qt代码中的QChar是传值而不是const引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41415797/