【发布时间】:2018-03-08 17:36:45
【问题描述】:
对于下面的代码,我知道因为我实现了一个复制构造函数默认移动被编译器阻止,我不明白的是为什么编译器选择复制构造函数,而不是发出错误?
如果不存在右值引用函数,右值引用可以作为引用函数的参数吗?
如果没有,这里会发生什么?
#include <iostream>
using namespace std;
class A{
public:
A(){printf("constructor\n");}
A(const A& a){printf("copy constructor");}
};
int main()
{
A a;
A b = std::move(a);
return 1;
}
输出是:
constructor
copy constructor
谢谢
【问题讨论】:
-
"如果不存在右值 ref 函数,是否可以将 ravlue 引用作为引用函数的参数?" -- 可以。
-
可以肯定的是,ravlue 引用可以作为左值引用函数参数的参数吗?谢谢!
-
@DsCpp 不完全是。可以传递给
const &参数。相关/欺骗:stackoverflow.com/questions/36102728/… -
您可以在自己的示例中清楚地看到它可以。
标签: c++ copy-constructor rvalue-reference move-constructor