類和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 &)
函數。