引用參數的重載

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

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