我一個函數調用期間得到了我的考試傳遞參數,列表和拷貝構造函數C++
在路過參數這個問題,參數複製=>調用拷貝構造函數的每個參數。假設列表作爲參數傳遞,列表的所有元素都被複制。如果它是對列表的引用,則只複製列表的地址。你對這些陳述有什麼看法?
我的回答是「如果它是一個列表的引用,不僅地址被複制,而且值」我得到了10分中的5分。 我的答案錯了嗎?對我而言,這就是我得到的。上述聲明是否正確?
我一個函數調用期間得到了我的考試傳遞參數,列表和拷貝構造函數C++
在路過參數這個問題,參數複製=>調用拷貝構造函數的每個參數。假設列表作爲參數傳遞,列表的所有元素都被複制。如果它是對列表的引用,則只複製列表的地址。你對這些陳述有什麼看法?
我的回答是「如果它是一個列表的引用,不僅地址被複制,而且值」我得到了10分中的5分。 我的答案錯了嗎?對我而言,這就是我得到的。上述聲明是否正確?
如果通過引用傳遞,則不會創建該對象的副本。這是通過引用傳遞和按值傳遞之間的區別。
在引擎蓋下,引用被實現爲指針,所以你可以說地址被複制,但這是一個實現細節。
的制定,雖然是錯誤的:
假設一個列表作爲參數傳遞,列表中的所有元素都複製。如果它是對列表的引用,則只複製列表的地址。
如果你傳遞一個列表或一個列表的引用不要緊。重要的是該方法如何處理參數 - 按價值或參考:
void foo(list l);
void goo(list& l);
list x;
list& y = x;
foo(x); //pass a list by value --copy is made
foo(y); //pass a reference by value --copy is made
goo(x); //pass a list by reference --no copy of the list
goo(y); //pass a reference by reference --no copy of the list
您的答案錯誤。當你通過引用傳遞變量時,它和傳遞指針給變量(adress)一樣,然後取消它的引用,在這個過程中沒有變量的副本。
那麼這個陳述是真的嗎?我很困惑,當它說,參考一個清單 – greenthunder
@greenth瀟灑地說,不,它不是。 –
@ greenthunder但你的答案都不是:P –