2014-01-24 53 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