我一直在關注這個tutorial,我無法理解這一部分。CPP常量函數參數說明
所以說,按值傳遞創建數據的副本,以便可以ineffiecient,因爲它產生的數據副本,是有道理的:
string concatenate (string a, string b)
{
return a+b;
}
那麼你有這個,要「解決創建數據副本「問題:
string concatenate (string& a, string& b)
{
return a+b;
}
這是有道理的,因爲它使用引用。
但我不明白這一點:
string concatenate (const string& a, const string& b)
{
return a+b;
}
它說:
通過合格他們爲const,功能禁止修改A和B都不值,但實際上可以以引用(參數的別名)的形式訪問它們的值,而不必製作字符串的實際副本。
爲什麼不使用第二種方式?在這個例子中,無論如何都不會修改數據?有人能給我一個更好的例子嗎?
僅僅是出於安全原因嗎?
嘗試'concatenate(string(「Hello」),string(「world」));'用第二個版本。 – DeiDei
@DeiDei的例子是一個很好的答案。除了保證不修改外,它允許傳遞臨時值。 –