【发布时间】:2018-12-04 11:08:26
【问题描述】:
通常,在 C++ 中,我知道按值、按引用或指针解析之间的区别,但在传递容器时我会感到困惑。
我的问题是通过引用或值传递指针容器有什么区别。 以及通过引用传递非指针容器和通过值传递指针容器有什么区别。
更具体地说,在以下两个问题中,如果 'func()' 改变了 'myClass' 参数的值会发生什么:
-
两者有什么区别:
void func(list<myClass*> myList);和
void func(list<myClass*> &myList); -
两者有什么区别:
void func(list<myClass> &myList);和
void func(list<myClass*> myList);
编辑: 如果您希望调用函数的更改反映到原始对象,您有哪些选项,它们有什么区别? 据我了解,您有以下选择: 要么
void func(list<myClass*>& myList);
或
void func(list<myClass>& myList);
【问题讨论】:
-
假设
<*myClass>应该是<myClass*>。 1 复制指针列表 2. 传递对指针列表的引用,它通常比第一个便宜,但访问它可能比访问副本稍微贵一些。 3. 您通常想要的签名类型,通过引用传递对象列表(不复制) 4. 与 1 相同。 -
@George 抱歉,我问的是它们之间的区别,而不是口头声明..
标签: c++ pointers reference containers