如果可以,请使用引用,当需要时使用引用。原因你需要使用一个指针:
- 有可能不是一个对象为它指向(空指针,没有空引用)。
- 您可能需要在其生命周期中引用不同的对象。
- 您可能需要引用整个对象数组(但
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