2014-01-24 160 views
0

如果传递一个大对象给一个函数,比如说一个包含大数组的类,那么通过引用传递总是更好?这个想法是构造函数,以便:C++通过引用传递

​​

加成的第一篇文章之后: 如果我想要的功能是不可修改的,我会用const引用。

我可以再调用函数简单地通过将对象添加到其中:

T large_data = T(1000000); 
f(large_data); 
+2

一般情况是,除非你需要它的副本。另外,除非修改输入,否则使用'const'引用。 – juanchopanza

+1

[如何将对象传递给C++中的函数?](http://stackoverflow.com/q/2139224/96780) –

回答

1
在C++

通常对于每个自定义类型最好通过引用或指针来传递。否则,除了性能,如果你的对象需要定制拷贝构造函数(你可能没有实现它,但编译器生成的只能做浅拷贝),你可能会遇到问题。此外,切片可能发生,等等......

2

这是通过引用将对象传递给函数的基本思想(对于不可变对象,使用const):您不希望传递基础(大量)数据,并且你不想要一个指针的混乱(内存管理问题,->和取消引用)。

+0

虽然我同意你的说法,但更好地表达你的意思,我不理解你对' >'和'*'运算符。没有更多的开销,因为引用通常也作为指针实现。 – Paranaix

+0

@Paranaix是的,但它都是在内部完成的 - 不需要't-> foo()'或'(* t).foo()'只需t.foo()。 –

+0

而且?我没有看到任何开销? ''''和'*'是C++中最常用的一些运算符,没有什么特别的,不管我写'.'还是' - >'都没有任何区别。相当矛盾的情况是:IMO' - >'更清楚地表示访问“引用”对象。 – Paranaix