右值引用是从C++11开始被支持的,可以实现对临时对象的引用,使用&&符号。
QByteArray的定义中有以下代码片段:
#ifdef Q_COMPILER_RVALUE_REFS
inline QByteArray(QByteArray && other) Q_DECL_NOTHROW : d(other.d) { other.d = Data::sharedNull(); }
inline QByteArray &operator=(QByteArray &&other) Q_DECL_NOTHROW
{ qSwap(d, other.d); return *this; }
#endif
这里的拷贝构造函数和赋值运算符的传参都支持右值。