重載引用參數(c++ primer plus -6th)

類設計和STL經常使用引用參數,因此知道不同引用類型的重載很有用。請看下面三個原型:

void sink(double &r1);

void sank(const double & r2);

void sunk(double && r3);

左值引用參數r1與可修改的左值參數(如double變量)匹配;const左值引用參數r2與可修改的左值參數、const左值參數和右值參數(如兩個double值的和)匹配;最後右值引用參數r3宇右值匹配。注意到與r1或者r3匹配的參數都與r2匹配。這就帶來了一個問題:如果重載使用這三種參數的函數,結果講如何?答案時江調用最匹配的版本:

void staff(double & rs);

void staff(const double & rcs);

void stove(double & r1);

void stove(const double & r2);

void sotve(const double && r3);

這讓你能夠根據參數時左值、const還是右值來定製函數的行爲:

double x = 55.5;

const double y = 32.0;

stove(x);

stove(y);

stove(x+y);

如果沒有定義函數stove(double &&), stove(x+y)將調用函數stove(const double &)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章