[英]passing parameter, list & copy constructor 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
您的回答是錯誤的。 當您按引用傳遞變量時,與將指針傳遞給變量(地址)然后取消引用相同,在此過程中不會復制任何變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.