簡體   English   中英

傳遞參數,列表和復制構造函數C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM