我正在閱讀C++ Primer Plus(第6版)一書,我遇到了一些讓我感到困惑的東西,所以請耐心等待我試着解釋...傳遞(int x)和(const int x)之間的區別
如果我有它的原型看起來像這樣的功能:
void cube(double x);
和另一個函數的原型誰看起來像這樣:
void cube(const double &x);
是什麼之間的區別二?對於第一個函數原型,該值通過值傳遞,這意味着它將被複制並因此不被該函數改變。對於第二個原型,值是通過引用傳遞的,但是它是一個常量引用,因此C++將創建一個匿名臨時變量並將該參數的值分配給臨時變量,從而模仿按值傳遞。所以,從本質上來說,這兩個函數原型真的沒有區別,對吧?那麼(const double & x)是什麼意思呢?
它不會創建臨時變量,您將傳遞雙倍地址,除非調用者被麻醉,否則它不能爲空(如果您嘗試解引用空引用,您將得到異常拋出)以及你可以使用。而不是 - >。此外,你不能改變儲存在x – Creris
內的內容我喜歡你如何描述,詳細地說,兩者之間的差異。然後你說:「所以兩者沒有區別,對吧?」你的描述也不太準確:在這裏沒有「匿名臨時」。 –