在C++11的右值引用出现前,常量引用就是C++的万能引用,他不仅可以引用到左值,常量左值,甚至还可以引用到右值上并且可以延续右值的生命期:
#include <iostream>
using namespace std;
class A
{
public:
A(int data):m_data(data)
{
cout<<"Construct, this addr:"<<this<<endl;
}
A(const A& a)
{
cout<<"Copy Construct, this addr:"<<this<<" ori addr:"<<&a<<endl;
}
~A()
{
cout<<"Destruct:"<<this<<endl;
}
int m_data;
};
A getA()
{
return A(10);
}
void useA(const A& a)
{
cout<<"a addr:"<<&a<<" data:"<<a.m_data<<endl;
}
int main()
{
useA(getA());
return 0;
}
运行程序输出&