应用的目的是:
1,希望得以直接对所传入的对象进行修改。
2,为了降低赋值大型对象的负担。效率问题。
以引用的方式传递对象当作函数参数,对象本身并不会复制出另一份---复制的是对象的地址。函数中对该对象进行的任何操作,都相当于对传入的对象进行间接的操作。
但是要注意其和指针传值时的区别:
区别1:在于使用方法不同:
引用:f(vector<int> &vec){vec[i]};
main()
{
int ia[3]={1,2,3};
vector<int> vec(ia,ia+3);
f(vec);
}
指针:f(vector<int> *vec){(*vec)[i]};
main()
{
int ia[3]={1,2,3};
vector<int> vec(ia,ia+3);
f(&vec);
}
区别2:指针可能指向某个NULL的地方,所以在使用的时候要先确定其值并非为0;而引用则一定代表某个对象,不需要进行检测。
建议:除非在函数内更改参数值,否则建议不要使用传地址。传址机制主要用于“传递class objects之用”。