1. 程式人生 > >C++ 常量引用與臨時變量

C++ 常量引用與臨時變量

size 解決 ring struct style primer 傳遞 urn 總結

由 <<C++ Primer>> 練習7.49 (b) 產生出來的小問題。

總結: 1.不要對臨時變量進行改變。要傳遞臨時變量,得用常量引用。

    2. 當引用不需要更改時,用const引用。

問題:

struct Sales_data {
    Sales_data() = default;
    Sales_data(std::string &str){}
    Sales_data& combine( Sales_data&);
};

Sales_data& Sales_data::combine( Sales_data& rhs) { //
使用普通引用作為參數 return *this; }

int main()
{
    Sales_data i;
    std::string str("a");
    //string類型隱式變為Sales_data類型(臨時變量)
    i.combine(str);//編譯器報錯,非常量限定
    return 0;
}

解決:

  參數使用const 引用

struct Sales_data {
    Sales_data() = default;
    Sales_data(const std::string
&str){} Sales_data& combine(const Sales_data&); }; Sales_data& Sales_data::combine(const Sales_data& rhs) { // 使用常量引用作為參數 return *this; } int main() { Sales_data i; std::string str("a"); i.combine(str); return 0; }

C++ 常量引用與臨時變量