C++ 常量引用與臨時變量
阿新 • • 發佈:2019-03-01
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++ 常量引用與臨時變量