特定
#include <iostream>
using namespace std;
struct Test {
public:
Test() {
cout << "Default constructor" << endl;
}
Test(const Test &) {
cout << "Copy constructor" << endl;
}
};
int main() {
Test && t1 = Test();
}
Run Code Online (Sandbox Code Playgroud)
为什么在初始化t1时,不使用Test的复制构造函数?从读取引用初始化看来,它object
是一个临时应该调用复制初始化.或者这是一个类类型表达式?如果是这种情况,有人可以定义类类型表达式是什么(我很难用Google搜索).
Test && t1 = Test();
不创建对副本的引用,而是Test()
生成临时对象并t1
直接绑定到该临时对象(并且临时的生命周期延长到该生命周期t1
).
2)使用初始化程序声明命名的右值引用变量时
否则,如果引用是rvalue引用或对const的左值引用:
如果object是一个xvalue,一个类prvalue,一个数组prvalue或一个函数左值类型,它是T或从T派生,等于或小于cv限定,那么引用绑定到初始化表达式的值或其值基础子对象.