.. highlight:: c++ :linenothreshold: 5 .. _ref-vs-ptr: ************************ Ref type vs pointer type ************************ Difference ========== * A ref variable cannot be re-assigned * A ref variable cannot be empty or undefined, not flexible * Ref type is easier to use with no ref/deref operations * Ref is safer to use * Pointer is more powerful and allows many algorithms * Array is also a pointer * New and delete only work with pointers Pass-by-ref vs Pass-by-pointer ============================== + Both allow modification of the actual parameter + Pass by ref has simpler syntax + Pass by pointer allows more complicated logic :: // swap pointer version // called like swap(&a, &b); void swap(int * ptr1, int * ptr2) { int tmp = *ptr1; *ptr1 = *ptr2; *ptr2 = tmp; } // swap ref version // cleaner syntax // called like swap(a, b); void swap(int & ref1, int & ref2) { int tmp = ref1; ref1 = ref2; ref2 = tmp; }