void m(int &&i)//函数1
{
cout<<"m &&:"<<i<<endl;
}
void m(const int &i)//函数2
{
cout<<"m const &:"<<i<<endl;
}
const int ci = 0,*p2 = &ci;
m(10);
m(ci);
如上代码,若函数m(10)调用函数1,函数m(ci)调用函数2;
若注销函数1,则都调用函数2,即右值可以传递给常引用;
若注销函数2,则m(ci)报错,即常引用不能传递给右值引用;
哪位大神还能具体讲讲这两者的区别吗?
const int &i = 10
和const int &i = ci
都是合法的