2010.8.16 关于函数参数是指针、还是引用的区别
1、效率差别不是很大,但是引用好一点。
用指针做形参,要另外开辟内存空间来存储实参的地址;但引用则不必。
其实引用最大的好处在于使用简单明了。比如你的swap函数,若用指针,调用时要写
swap(&x,&y);
而用引用,调用时直接写
swap(x,y);即可。 经过证实!
2、在参数传递方面,引用比指针直观,可读性强:
1. 尽量使用引用代替指针,以下两条除外。
2. 如果必须传递数组,使用指针加元素个数。
3. 如果参数可能无效(null),使用指针,并判断(p == null)。
返回值方面:
1. 如果返回动态分配的对象或内存,必须使用指针,引用可能引起内存泄漏。
2. operator=的返回值必须是 Cxxx&。
除了传递参数和返回值,其它地方都应该是指针更好一些。
必须使用引用的地方:
1. operator=的返回值必须是 Cxxx&。
2. 运算符重载的时候:operator+(const Cxxx& lhs, const Cxxx& rhs); 不能用指针。
3、
引用传递指向实参,不产生副本
指针传递产生一个指针副本,该指针指向实参
普通参数产生一个副本,该副本保存了实参的值