C++:如果使用引用的點是要更改原始變量的值,爲什麼要使用const引用傳遞? [C++]
例如,如果我們想要更改實際變量的值,則使用「通過引用傳遞」。
那麼什麼是「通過const引用」?它說它不允許我們改變變量的值。
好的。那麼爲什麼不首先使用「通過價值」? :/「Pass By Value」也不會改變變量的值。它會改變臨時副本的值。
那麼爲什麼要使用CONST參考? O_O?我希望你能找到我。
請幫我清除疑問。
C++:如果使用引用的點是要更改原始變量的值,爲什麼要使用const引用傳遞? [C++]
例如,如果我們想要更改實際變量的值,則使用「通過引用傳遞」。
那麼什麼是「通過const引用」?它說它不允許我們改變變量的值。
好的。那麼爲什麼不首先使用「通過價值」? :/「Pass By Value」也不會改變變量的值。它會改變臨時副本的值。
那麼爲什麼要使用CONST參考? O_O?我希望你能找到我。
請幫我清除疑問。
我假設你的意思是你爲什麼
int foo(int const& bar)
,而不是
int foo (int bar)
如果這是你的問題,通過引用傳遞使用,使副本不需要進行。在上面的例子中,它是微不足道的,因爲參數是int
。但是,如果它是一個大的vector
或map
,你當然不會希望通過價值傳遞,因爲它會做一個副本。
所以如果你只是想通過引用來避免一個副本,但不希望變量是可變的,你可以使它成爲const
引用。
「你肯定不會想要通過價值傳遞,因爲它會做一個副本。「但有時你需要一份副本。 – juanchopanza 2014-10-18 14:35:18
嗨。非常感謝回覆如此之快。我還有一個問題。編輯:我想我知道了。今天我太困惑了。在做這個線程之前,我也讀過其他類似的問題。 – Vipulcoolrule 2014-10-18 14:45:44
如果按值傳遞,則必須調用複製構造函數。對於像int這樣的東西來說,它確實很微不足道,但是像數千字節的字符串這樣的東西很難複製,而如果你傳入引用,那麼在技術上只傳遞指向該內存的指針,更好的語法 – Creris 2014-10-18 14:33:15