通过const引用传递Qt类
Passing Qt classes by const reference
众所周知,Qt类在传递值时使用写入复制。所以只有在需要的时候复制才会完成。我见过很多次通过const引用传递Qt类,当只需要对对象进行只读访问时。为什么人们传递const QString&
而不是简单的QString
如果两种情况下都没有复制?
这是因为魔法是有代价的。QString不复制整个字符串,但它计算引用。许多QString的复制会使程序变慢。如果const QString&
足以满足您的需求,为什么不使用它呢?
写时复制并不意味着该对象不会被复制。它只意味着在写时将进行深度拷贝,即在写时将复制实际的数据。复制的主要复杂性当然在于数据复制。但是做一个浅拷贝需要一些操作,比如引用计数。
结果,通过引用传递仍然比浅拷贝便宜。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- QT-如何从const函数附加到本地列表
- QT忽略const规范
- QT - C++错误:在此上下文中'QWidget::QWidget(const QWidget&)'是私有的
- Qt Creator 不能使用 const char*
- const char* to LPCWSTR in Qt
- Qt4.8.6中的Qt::escape(const QString & plain)在哪里?
- 在Qt中发送信号时的const-ref
- QObject::connection(const QObject*, const char*, const char*, Qt::ConnectionType) "Cannot convert ar
- 带有 Qt 的正则表达式 - indexIn(const QString &) 无法按预期工作
- 无法从"const char [3]"转换为"char *"x100000(Qt Creator C++ Windows 32)
- Qt & Kinect:如何将 BYTE* pBuffer 转换为 QByteArray 或 const uchar*?
- 通过const引用传递Qt类
- C2664 无法在 Qt C++ 中将参数 1 从用户 *const 转换为用户
- 在const wchar_t*和const char*之间进行转换,不允许使用qt
- 返回const auto对象——和Qt隐式共享
- Qt,无法将不完整类型'A *'的参数转换为'const QObject *'
- 使用 Qt:使用 QList<Type *const> 时从 const void* 到 void* 的转换无效
- Qt 错误:'const class QString'没有名为 'toStdString' 的成员