c++ - 为什么Qt代码中的QChar是传值而不是const引用?

标签 c++ qt

在 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/

相关文章:

c++ - 如何将数据写入单独的行中的每个文件?

用于使用 Horner 方法进行多项式计算的 C++ constexpr

c++ - 声明一个大小不变的数组 - 编译错误

c++ - 如何在视网膜显示器上使用 QPainter、QOpenGLPaintDevice 和 QOpenGLWidget 流畅地绘制?

c++ - 学习 Qt - 创建 QApplication

c++ - 有没有办法在 c++ 中禁用旧的 c 样式转换

c++ - 与模板特化成为 friend 时可能出现 gcc 错误

c++ - Qt - 使用lambda函数修改先前连接信号的槽参数

c++ - Linux 上的 QT、VTK 项目未运行

c++ - Windows 信号量和 QSystemSemaphore