指针与引用区别
-
不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。
-
指针可以被重新赋值以指向另一个不同的对象。
-
引用则总是指向在初始化时被指定的对象,以后不能改变。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1("Nancy");
string s2("Clancy");
string& rs = s1; //引用s1
string *ps = &s1; //指向s1
cout<<s1<<", "<<rs<<endl;
rs = s2; //rs仍旧引用s1, 但是s1的值是"Clancy"
cout<<s1<<", "<<rs<<endl;
ps = &s2; //ps现在指向s2, s1没有改变
cout<<s1<<", "<<rs<<endl;
return 0;
}
何时使用指针或引用
- 使用指针的情况
- 一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空)
- 二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。
- 使用引用的情况
- 如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。
- 还有一种情况,就是当你重载某个操作符时,你应该使用引用