今天看到一段代碼,函數的形參類型是 const A &(A是定義的一個類)
一開始覺得沒啥,但想想又不對勁
const就是常量嘛,不想讓這個參數被修改,引用就是起別名,修改形參的值,實參也會改變(其實就是修改同一個變量),那聲明成引用變量的意義是什么
一波百度之后
&是為了引用傳遞,防止值傳遞的復制數據
const是為了保護數據不被改動
const&防止傳值時拷貝構造函數的調用開銷
簡單來說就是,在不加const 和 & 的情況下,進行普通的函數調用,必然會有值傳遞,如果數據量大花費時間長(且有些類型在設計上拒絕復制)
引用的話只是起別名,還是這個變量,就不用進行值傳遞,但這個就可以改變值,所以再加上const修飾
結論
如果不需改變形參的值又不用作參數傳遞(實參賦值給形參),用常引用作形參適應面最廣:實參可以是變量也可以是常量。
如果需要改變形參的值,用引用作形參最合適:實參必須是變量不允許是常量。
如果不需改變形參的值又可以用作參數傳遞(實參賦值給形參),用普通變量作形參:多了傳遞參數的開銷。
參考資料: