如果可以,請使用引用,當需要時使用引用。原因你需要使用一個指針:
- 有可能不是一個對象爲它指向(空指針,沒有空引用)。
- 您可能需要在其生命週期中引用不同的對象。
- 您可能需要引用整個對象數組(但
std::vector
通常更好)。
但是,有一些情況下,兩者的使用並不真正重疊,而且您根本無法替代另一個。對於一個明顯的例子,考慮下面的代碼:
template <class T, size_t N>
size_t size(T(&matrix)[N]) {
return N;
}
這可以讓你找到一個數組的大小:
int array1[some_size];
int array2[some_other_size];
size_t n = size(array1); // retrieves `some_size`
size_t m = size(array2); // retrieves `some_other_size`
...但它只是如果你試圖通過將不能編譯它的指針:
int *x = new int[some_size];
size_t n = size(x); // won't compile
在最好的似乎毫無意義的寫代碼來獲得一個指針時,其點的一部分,是拒絕被傳遞的指針。其中
對不起,踩着你的腳趾,hobodave。我同意你的標題更好。 – GManNickG 2010-02-24 02:13:53
可能重複:http://stackoverflow.com/questions/57483/difference-between-pointer-variable-and-reference-variable-in-c – 2010-02-24 02:19:43
感謝,布賴恩和GMAN。 – smwikipedia 2010-02-24 02:31:27