例如下面這段代碼
fun(int* in, const std::string& str)
{
}
- 不加引用的話,str則被復制一份,函數中對str的操作實質上是對其復制品的操作,所以即使在函數中修改了str,調用層的原str並不會被改變。
- 加了引用的話,傳入的str即是調用層的實際參數,這樣省卻了復制過程,效率會有提高。但如果函數中修改了str,則原str也會改變,因為其實是同一個東西。
- 有時候為了追求效率(防止傳值時拷貝構造函數的調用開銷),又希望避免改變原來的str,則可在引用的基礎上加const修飾,這樣函數中就不能再修改str的內容(否則會編譯出錯)。
