类和STL中经常使用引用参数。那么,引用参数的重载的机制是如何的?
void funA(double &p_lv); //对应可在funA中修改的 左值
void funB(const double &p_lrv); //对应左值和右值
void funC(double &&p_rv); // 对应右值
其中,funB的参数可以匹配funA和funC的参数。
void funD(double &p_lv); // 对应可修改的左值
void funD(const double &p_lrv); // 对应右值,const左值
void funE(double & p_lv); // 对应可修改的左值
void funE(const double &p_lv); // 对应const左值
void funE(double && p_rv); // 对应右值
上面的机制,可以让我们根据函数参数(lvalue,const或rvalue)来自定义函数的功能。
double x = 32.5;
const double y = 298.0;
funE(x); // funE(double &)
funE(y); // funE(const double &)
funE(x+y); // funE(double &&)
如果没有funE(double &&)
函数,则funE(x+Y);
对应funE(const double &)
函数。
原文地址:http://blog.csdn.net/yelede2009/article/details/44303407