gre*_*der 0 c++ list parameter-passing copy-constructor
我的考试得到了这个问题
在传递参数中,在函数调用期间,复制参数=>调用每个参数的复制构造函数.假设将List作为参数传递,则复制列表的所有元素.如果它是对列表的引用,则仅复制列表的地址.你对这些陈述有什么看法?
我的回答是"如果它是对列表的引用,不仅复制了地址而且复制了值",我得到5分中的5分.我的回答错了吗?对我来说,这就是我得到的.上述陈述是否正确?
如果通过引用传递,则不会生成对象的副本.这是通过引用传递和传递值之间的区别.
在引擎盖下,引用被实现为指针,因此您可以说地址被复制,但这是一个实现细节.
虽然配方错误:
假设将List作为参数传递,则复制列表的所有元素.如果它是对列表的引用,则仅复制列表的地址.
将列表或引用传递给列表无关紧要.重要的是该方法如何获取参数 - 通过值或通过引用:
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
Run Code Online (Sandbox Code Playgroud)